Python错误; UnicodeEncodeError:'ascii'编解码器无法编码字符u'\ u2026'

时间:2015-04-26 10:06:43

标签: python csv encoding utf-8

我试图从包含推文的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)

1 个答案:

答案 0 :(得分:6)

您只需要将文本编码为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:

  

注意此版本的csv模块不支持Unicode输入。此外,目前有一些关于ASCII NUL字符的问题。因此,所有输入应为UTF-8或可打印的ASCII以确保安全;请参阅示例部分中的示例。