我有一些 Unicode 变量。
title
u'\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430'
type(title)
unicode
如果我打印此可用信息,我会得到:
print (title)
Администратор интернет-магазин
当我尝试将此数据(西里尔字母符号)写入 CSV 文件时:
with open('avito.csv','a') as f:
writer=csv.writer(f)
writer.writerow((title))
出现此错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0410' in position 0: ordinal not in range(128)
如何将此变量作为西里尔字母符号写入 CSV?
最佳答案
您必须使用正确的编码写入文件,从您的评论来看,我猜它是cp1251
:
import io
title = u'\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430'
with io.open('avito.csv', 'a', encoding='cp1251') as output:
output.write(title + '\n')
关于python - 如何将 Unicode 数据作为西里尔字母符号写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43076196/