用变音符号写入CSV文件导致“UnicodeEncodeError:'ascii'编解码器无法编码字符”

时间:2017-02-06 11:45:40

标签: python python-3.x csv encoding utf-8

我正在尝试用双点(变音符号)来写字符,例如ä,ö和Ö。我可以使用data.encode("utf-8")将其写入文件,但结果b'\xc3\xa4\xc3\xa4\xc3\x96'不好(UTF-8作为文字字符)。我希望将"ääÖ"写入存储到文件中。

如何使用变音字符将数据写入Python 3中的CSV文件?

import csv
data="ääÖ"
with open("test.csv", "w") as fp:
    a = csv.writer(fp, delimiter=";")
    data=resultFile
    a.writerows(data)

回溯:

File "<ipython-input-280-73b1f615929e>", line 5, in <module>
  a.writerows(data)
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 15: ordinal not in range(128)

2 个答案:

答案 0 :(得分:3)

将参数encoding添加到open()并将其设置为'utf8'

import csv

data = "ääÖ"
with open("test.csv", 'w', encoding='utf8') as fp:
    a = csv.writer(fp, delimiter=";")
    a.writerows(data)

修改:删除io库的使用,因为open与Python 3中的io.open相同。

答案 1 :(得分:-1)

这个解决方案应该适用于python2和3(在python3中不需要):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import csv
data="ääÖ"
with open("test.csv", "w") as fp:
    a = csv.writer(fp, delimiter=";")
    a.writerows(data)

致记: Working with utf-8 encoding in Python source