我已经使用 tweepy 使用 Python 将推文文本存储在 csv 文件中 csv.writer(
),但我必须在存储之前将文本编码为 utf-8,否则 tweepy 会抛出一个奇怪的错误。
现在,文本数据存储如下:
"b'Lorem Ipsum\xc2\xa0Assignment '"
我尝试使用此代码对此进行解码(其他列中有更多数据,文本在第 3 列中):
with open('data.csv','rt',encoding='utf-8') as f:
reader = csv.reader(f,delimiter=',')
for row in reader:
print(row[3])
但是,它不会解码文本。 I cannot use .decode('utf-8')
as the csv reader reads data as strings ie type(row[3])
is 'str'
and I can’t seem to convert it into bytes
,数据再次被编码!
如何解码文本数据?
编辑:这是来自 csv 文件的示例行:
67783591545656656999,3415844,1450443669.0,b'Virginia School District Closes After Backlash Over Arabic Assignment: The Augusta County school district in\xe2\x80\xa6 | @abcde',52,18
注意:如果解决方案是在编码过程中,请注意,我负担不起再次下载整个数据。
原文由 gitmorty 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您的输入文件确实包含带有 Python 语法
b
前缀的字符串,一种解决方法(即使它不是包含 csv 数据的有效格式)是使用 Python 的ast.literal_eval()
按照@Ry 的 建议 运行——尽管我会以稍微不同的方式使用它,如下所示。这将提供一种安全的方法来解析文件中以
b
为前缀的字符串,表明它们是字节字符串。其余的将通过不变。请注意,这不需要将整个 CSV 文件读入内存。