2014-11-25 51 views
2

我正在使用csv模块编写包含一些非ascii字符到csv文件的大型列表。我不断收到以下错误消息使用python 2.7编写包含unicode的csv文件2.7

UnicodeEncodeError: 'ascii' codec can't encode characters in position 48-50: ordinal not in range(128) 

我不需要这些字符,因此可以忽略它们。我尝试了在SOF上推荐的不同方式,但目前为止它们都没有工作(错误信息是相同的)。有没有简单的方法来解决编码错误并继续?我想:

io.open(file, encoding = "utf-8") 
codecs.open(file, encoding = "utf-8") 
codes.open(file, errors = "ignore") 

我可以通过简单的设置encoding = "utf-8"使用pandas模块将数据写入CSV。我可以在csv模块中做类似的事吗?

回答

3

对于Python 2.7,您应该使用unicodecsv模块:unicodecsv 0.9.4。这是Python内置的csv模块的替代品,它支持Unicode。在Python 3.x中,您不再需要这种替换,因为Python 3.x在其csv模块中确实支持Unicode。

您可以通过运行安装:

pip install unicodecsv 
+0

谢谢,作品perferct! – 2014-11-25 00:33:47

0

您可以安装unicodecsv也可以在UTF-8格式在使用csv writerCSV文件中写入写一行。

import csv 
with open("sample.csv", "w") as wf: 
    writer = csv.writer(wf) 
    writer.writerow([unicode(s, "utf-8") for s in row])