在循环CSV行

时间:2016-11-15 16:13:55

标签: python-3.x

使用此代码尝试打印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格式,或者至少是OpenOffice Calc在Windows中打开文件时所说的。

在“忽略”®字符时是否有任何方法可以打印行,以便不返回错误?任何替代解决方案也将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

如果你想过滤一些&#34; unprintable / weird&#34;你可以这样做:

row = ["aaaaa \xae bbbbb","foo"]

filtered_row = ["".join(c if ord(c)<128 else "." for c in s) for s in row]
print(filtered_row)

结果(所有奇怪的字符都被点替换):

['aaaaa . bbbbb', 'foo']