【发布时间】:2017-03-29 14:52:18
【问题描述】:
使用此代码尝试打印 csv 中的每一行:
import csv
f = open('export.csv')
csv_f = csvkit.reader(f)
for row in csv_f:
print(row)
很遗憾,csv 文件在多行中包含字符 ®,这会导致以下错误:
UnicodeEncodeError: 'charmap' codec can't encode character '\xae' in position 27: character maps to <undefined>
我已经搜索了类似问题的其他答案,并尝试使用不同的编码,但不幸的是,我无法完全理解它以使其工作。 CSV 文件似乎是 UTF-8 格式,或者至少当我在 Windows 中打开文件时 OpenOffice Calc 是这样说的。
我有什么方法可以在“忽略” ® 字符的同时打印行以便不返回错误?任何替代解决方案也将不胜感激。
【问题讨论】:
-
为我工作。你可以试试
print([x.decode("latin-1") for x in row])吗? -
我收到
AttributeError: 'str' object has no attribute 'decode' -
对不起。
print([x.encode("latin-1") for x in row]) -
听起来像是 Windows 控制台错误:stackoverflow.com/questions/14284269/…
-
零比雷埃夫斯 - 这确实是一个 Windows 控制台错误。我将代码页切换到 65001(Windows 控制台中的
chcp 65001),然后运行脚本 - 运行良好。谢谢您的帮助。 (其他人请注意:每次重新启动 Windows 控制台时,您都需要再次运行此命令。)
标签: python-3.x