当前位置: 首页 > 知识库问答 >
问题:

用Python将中文写入csv文件的问题

赫连捷
2023-03-14

我是这里的蟒蛇初学者。最近我一直试图从一个当地的中文网站上抓取一些数据。我成功地将信息存储为矩阵(列表列表),但是当我试图将其写入csv文件时,我得到了一些混乱的东西。下面是代码:

from bs4 import BeautifulSoup
import requests
import pandas as pd
import csv
url = "http://wszw.hzs.mofcom.gov.cn/fecp/fem/corp/fem_cert_stat_view_list.jsp"
r=requests.get(url)
data= r.text
soup = BeautifulSoup(data) 

table = soup.find_all('table')[3]
rows = table.find_all('tr')
dogData= 0
c=[]
for tr in rows:
    cols = tr.find_all('td')
    dogName =cols[0].get_text()
    rank2013 = cols[1].get_text()
    rank2012 =cols[2].get_text()
    rank2008 =cols[3].get_text()
    rank2003 =cols[4].get_text()
    rank2004 =cols[5].get_text()
    rank2005=cols[6].get_text()
    temp=[dogName,rank2013,rank2012,rank2008,rank2003,rank2004,rank2005]
    [x.encode('gb18030') for x in temp]
    c.append(temp)



with open("output.csv", "wt") as f:
    writer = csv.writer(f)
    writer.writerows(c)

我使用的是Python3.4,有人能告诉我哪里出了问题,以及如何改进代码吗?非常感谢!马可

共有1个答案

鄢翰藻
2023-03-14

我没有运行你的代码,但我确实注意到一些奇怪的事情。你打字了

temp=[dogName,rank2013,rank2012,rank2008,rank2003,rank2004,rank2005]
[x.encode('gb18030') for x in temp]
c.append(temp)

然而,[x.encode('gb18030')用于临时x]没有任何作用。现在,您编写的代码与以下代码相同:

temp=[dogName,rank2013,rank2012,rank2008,rank2003,rank2004,rank2005]
c.append(temp)

如果您想以使用列表理解的方式使用列表理解:

temp=[dogName,rank2013,rank2012,rank2008,rank2003,rank2004,rank2005]
modified_temp = [x.encode('gb18030') for x in temp]
c.append(modified_temp)
 类似资料:
  • 问题内容: 我有一个pandas数据框,我想将其写入CSV文件。我正在使用以下方法: 并得到错误: 有什么方法可以轻松解决此问题(即我的数据框中有Unicode字符)吗?有没有一种方法可以使用例如“ to-tab”方法(我认为不存在)写入制表符分隔文件而不是CSV? 问题答案: 要用制表符分隔,可以使用参数: 要使用特定的编码(例如),请使用参数:

  • 问题内容: 我有一长串以下形式的清单- 即列表中的值是不同的类型-浮点数,整数,字符串。如何将其写入csv文件,以便输出的csv文件看起来像 问题答案: Python的内置CSV模块可以轻松处理此问题: 假设您的问题中的清单定义为。您可以通过各种可选参数来调整输出CSV的确切格式,如上面链接的库参考页中所述。 Python 3更新

  • 问题内容: 我认为我应该完成一项我似乎无法解决的非常简单的任务。 如何将Python字典写入csv文件?我想要的只是将字典键写入文件的第一行,并将键值写入第二行。 我最接近的是以下内容(我是从别人的帖子中获得的): 问题是,上面的代码似乎只将密钥写入第一行,仅此而已。我没有将值写入第二行。 有任何想法吗? 问题答案: 您使用的是期望字典列表而不是字典的列表。您只想DictWriter.writer

  • 我有一个长长的列表,列表的形式如下--- i、 列表中的值有不同的类型——float、int、string。如何将其写入csv文件,使输出的csv文件看起来像

  • 问题内容: 将结构转储到提供的csv文件中的惯用golang方法是什么?我在一个func里面,我的结构作为接口{}传递: 为什么要使用界面{}?-从JSON读取数据,可能会返回一些不同的结构,因此尝试编写足够通用的函数。 我的类型的一个例子: 问题答案: 如果您使用具体类型,将会容易得多。您可能想要使用该软件包,这是一个相关示例;https://golang.org/pkg/encoding/cs

  • 我正在尝试将json文件转换为csv文件。json文件来自tweepy。 但是当我打印它的时候,它起作用了。当我只写时,它就起作用了。 我是一个新手在Python和twepy。但是我的直觉告诉我,这个问题与json文件本身有关。 这是json文件本身: 另一个错误: Traceback(最近一次调用):文件"C:\用户\用户\桌面\fase 1-20170930T062552Z-001\trans