2014-11-25 93 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])