我正在尝试从包含推文的 JSON 文件中提取一些数据并将其写入 csv。该文件包含各种字符,我猜这就是我收到此错误消息的原因:UnicodeEncodeError: 'ascii' codec can't encode character u'\u2026'
我想我必须在写入 csv 文件之前将输出转换为 utf-8,但我无法做到这一点。我在 stackoverflow 上发现了类似的问题,但不是我无法针对我的问题调整解决方案(我应该补充一点,我对 python 不是很熟悉。我是社会科学家,而不是程序员)
import csv
import json
fieldnames = ['id', 'text']
with open('MY_SOURCE_FILE', 'r') as f, open('MY_OUTPUT', 'a') as out:
writer = csv.DictWriter(
out, fieldnames=fieldnames, delimiter=',', quoting=csv.QUOTE_ALL)
for line in f:
tweet = json.loads(line)
user = tweet['user']
output = {
'text': tweet['text'],
'id': tweet['id'],
}
writer.writerow(output)
最佳答案
您只需要将文本编码为 utf-8:
for line in f:
tweet = json.loads(line)
user = tweet['user']
output = {
'text': tweet['text'].encode("utf-8"),
'id': tweet['id'],
}
writer.writerow(output)
csv 模块不支持在 python2 中编写 unicode:
关于Python错误; UnicodeEncodeError : 'ascii' codec can't encode character u'\u2026',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29876278/