编码/解码Unicode和编写CSV

时间:2016-06-11 16:01:48

标签: python csv unicode

我正在尝试将基于非拉丁语言的单词写入CSV,并且无法以正确的形式写出单词。

foreign='а также'
with open('C:\\Users\\Lance\\Desktop\\Programs\\Database Builder\\Russian Test.csv', 'wb') as outfile:
    outfile.write((foreign).encode('utf-8'))

此代码的输出为:

аÑ,акжÐμ

谢谢!

3 个答案:

答案 0 :(得分:3)

它正确写入文件,但您可能正在使用使用Windows-1252编码的编辑器或控制台显示文件。

来自美国Windows cmd.exe控制台的示例:

C:\>type "Russian Test.csv"
а также
C:\>chcp 1252
Active code page: 1252

C:\>type "Russian Test.csv"
а также
C:\>chcp 65001
Active code page: 65001

C:\>type "Russian Test.csv"
а также

注意:代码页65001在Windows上是UTF-8编码。

由于您似乎使用的是Python 3,因此您应该这样做并直接编写Unicode字符串:

foreign='а также'
with open('Russian Test.csv', 'w', encoding='utf8') as outfile:
    outfile.write(foreign)

答案 1 :(得分:0)

首先安装unicodecsv

pip install unicodecsv

然后在脚本中导入

import unicodecsv as csv

为我工作。

答案 2 :(得分:-1)

首先,将数据写入csv文件取决于csv库,正确的脚本应该是:

import csv
with open('path/to/test.csv', 'wb') as f:
    writer = csv.writer(f)
    for line in <your_data>:
       writer.writerow(line)

其次,由于csv库不支持python 2x中的unicode,你需要使用非常好地处理unicode的替代方法 - https://github.com/jdunck/python-unicodecsv,你只需要安装unicode版本的csv库,然后添加short在第一行导入表达式:

pip install unicodecsv
import unicodecsv as csv
...

请记住,通过在每个字符串前添加“u”将所有字符串转换为unicode。