【问题标题】:issues with writing Chinese to csv file in Python在 Python 中将中文写入 csv 文件的问题
【发布时间】:2015-04-04 03:36:55
【问题描述】:

我是这里的python初学者。最近我一直在尝试从本地中文网站上抓取一些数据。 我成功地将信息存储为矩阵(列表列表),c,但是当我试图将其写入 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)

我正在使用 Python 3.4 谁能告诉我出了什么问题以及如何改进代码?非常感谢! 马可

【问题讨论】:

  • [x.encode('gb18030') for x in temp] 到底在做什么?它是列表理解,但没有分配给变量。基本上那行代码什么都不做,因为你没有将它传递给要存储的变量。

标签: python csv python-3.x output


【解决方案1】:

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

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

但是[x.encode('gb18030') for x in temp] 没有做任何事情。现在,你写的代码是这样的:

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)

【讨论】:

  • 你好 msanti,你是对的,这里有一个错误。我根据您的建议更改了代码,但现在我在 csv 文件中获取了原始 gb18030 代码。我实际上想要的是在csv文件中打印出汉字。有没有办法做到这一点?我在网上搜索,他们建议使用模块编解码器,但我不知道如何实现这一点。你能给我一些建议吗?谢谢
  • 您可能想做一些研究。问题是您如何编码数据。这里是学习stackoverflow.com/questions/14174260/…的建议链接,或者你可能想找一个处理汉字的API
  • 谢谢!我已经想通了。现在,我不是作为列表输出,而是作为元素编写,效果很好。感谢您的帮助。
猜你喜欢
  • 2021-05-07
  • 2013-12-14
  • 2023-02-08
  • 2021-10-18
  • 1970-01-01
  • 2017-12-02
  • 2016-09-02
  • 2016-03-26
  • 1970-01-01
相关资源
最近更新 更多