【问题标题】:Encode error in pythonpython中的编码错误
【发布时间】:2013-06-29 16:52:29
【问题描述】:

我试图解析推特数据。我检索了数据并将其存储在一个名为 '推特数据'

f = open('twitterdata','r')
for line in f:
    jsonline = json.loads(line)
    for key in jsonline:
        print str(jsonline[key]).encode('utf-8')

即使在使用 encode('utf-8') 后我仍然收到错误消息:

print str(jsonline[key]).encode('utf-8')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-17: ordinal not in     range(128)

【问题讨论】:

  • 您使用的 Python 版本是 2.x 还是 3.x? Unicode 处理在两个版本之间发生了变化,因此了解您使用的版本非常重要,这样我们才能为您提供正确的答案。
  • 我使用的是 python 2.7.3。使用 pycharm IDE

标签: python twitter utf-8 ascii


【解决方案1】:

删除str(),或将其更改为unicode()

print jsonline[key].encode('utf-8')

print unicode(jsonline[key]).encode('utf-8')

在 Python 2.x 中,str() 尝试将其内容转换为 8 位字符串。由于您向其传递 Unicode 对象,因此它使用默认编码 (ascii) 并在到达 .encode('utf-8') 调用之前失败。如果您获取的数据都是文本,则在此处使用 unicode() 是多余的,但如果其中一些数据是整数,则将很有用,因此我建议使用后者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-04
    • 2015-10-07
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2011-03-14
    相关资源
    最近更新 更多