我正在尝试从包含推文的 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/

10-13 02:49