【发布时间】:2018-06-12 13:05:29
【问题描述】:
我尝试阅读并打印以下文件:txt.tsv (https://www.sec.gov/files/dera/data/financial-statement-and-notes-data-sets/2017q3_notes.zip)
根据 SEC,数据集以单一编码提供,如下所示:
制表符分隔值 (.txt):utf-8,制表符分隔,\n 终止的行,第一行包含小写的字段名称。
我当前的代码:
import csv
with open('txt.tsv') as tsvfile:
reader = csv.DictReader(tsvfile, dialect='excel-tab')
for row in reader:
print(row)
所有尝试都以以下错误消息结束:
'utf-8' 编解码器无法解码位置 4276 中的字节 0xa0:无效起始字节
我有点失落。谁能帮我?非常感谢。
【问题讨论】:
-
我们能看到你正在使用的文件吗?
-
另外,这是 Python 2 还是 3?答案非常很重要,因为
csv模块在 Python 2 上因非 ASCII 而损坏。 -
我使用的是 Python 3.6.0
-
嗯...在重新阅读错误时,我很确定问题出在您的输入文件上。该错误表明它正在尝试将其读取为
utf-8,因此您的输入可能不符合所描述的格式。也就是说,您链接的文件似乎很好地遵循它(它是纯 ASCII AFAICT;它使用一些不寻常的 ASCII 控制字符,但它们都在 ASCII 范围内),所以我不确定你会在哪里看到\xa0字节。有没有可能是你在使用前不小心修改了文件? -
见下方 Kopytok 的回答。如果我将编码更改为“windows-1252”,它会完美运行。