我需要读取csv文件中指定的行和列并写入txt文件,但是出现了Unicode解码错误。
import csv
with open('output.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
your_list = list(reader)
print(your_list)
答案 0 :(得分:0)
此错误的原因可能是您的CSV文件未使用UTF-8编码。找出用于文档的原始编码。
首先,通过省略编码参数来尝试使用默认编码:
with open('output.csv', 'r') as f:
...
如果这样不起作用,请尝试使用其他常用的编码方案,例如:
with open('output.csv', 'r', encoding="ISO-8859-1") as f:
...
答案 1 :(得分:0)
如果此代码出现unicode解码错误,则可能是csv文件未经过utf-8编码...正确的解决方法是找到正确的编码并使用它。
如果只希望快速而又肮脏的解决方法,Python提供errors=...
的{{1}}选项。根据标准库中open
函数的文档:
“严格” ,以在出现编码错误时引发ValueError异常。默认值None具有相同的效果。
'忽略'会忽略错误。请注意,忽略编码错误可能会导致数据丢失。
“替换” 使替换标记(例如“?”)插入格式错误的数据中。
“ surrogateescape” 将表示任何不正确的字节,作为Unicode专用区域中从U + DC80到U + DCFF的代码点。当在写入数据时使用surrogateescape错误处理程序时,这些专用代码点将被转换回相同的字节。这对于处理未知编码的文件很有用。
仅在写入文件时支持'xmlcharrefreplace'。编码不支持的字符被替换为适当的XML字符引用&#nnn;。
“反斜杠替换” 用Python的反斜杠转义序列替换格式错误的数据。
'namereplace'(仅在写入时受支持)用\ N {...}转义序列替换不受支持的字符。
当我只想知道错误的字节时,我经常使用open
;而当我想知道它们是什么时,我经常使用errors='replace'
。