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

时间:2015-04-04 03:36:56

标签: python csv python-3.x output

我是这里的初学者。最近我一直试图从中国本地网站上搜集一些数据。 我成功地将信息存储为矩阵(列表列表),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 任何人都可以告诉我出了什么问题,我怎样才能改进代码?非常感谢! 马可

1 个答案:

答案 0 :(得分:0)

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

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)