'charmap'编解码器无法对位置XX处的字符进行编码

时间:2018-08-11 05:59:07

标签: python-3.x

我有一个简单的脚本,试图从单个文件中提取多个json对象,并将其存储为列表:

import json

URL = r"C:\Users\Kenneth\Youtube_comment_parser\Testing.txt"

with open(URL, 'r', encoding="utf-8") as handle:
    json_data = [json.loads(line) for line in handle]

print(json_data) # Can't .encode() because it's a list

即使指定了utf-8编码,我仍然遇到编解码器错误。如果可能的话,我也想将此对象更改为字典,但这是我所能做到的。

确切的错误是:

UnicodeEncodeError: 'charmap' codec can't encode characters in position
394-395: character maps to <undefined>

谢谢。

1 个答案:

答案 0 :(得分:0)

我能够通过删除一个产生“ / undefined>”的Unicode字符,字符串'\ ufeff'来解决此问题,然后其余字符都能很好地显示。这需要我遍历字典列表中的键,并在必要时进行替换。

import json

URL = r"C:\Users\Kenneth\Youtube_comment_parser\Testing.txt"

json1_file = open(URL, encoding='utf-8')
json1_str = json1_file.read()
json1_str = [d.strip() for d in json1_str.splitlines()]
json1_data = [json.loads(i) for i in json1_str]

json1_data = [{key:value.replace(u'\ufeff', '') for
              key, value in json1_data[index].items()} for
              index in range(len(json1_data))]

print(json1_data[1]['text'].encode('utf-8')) 

仍然不确定为什么我必须先使用utf-8打开,然后使用我的print语句再次进行编码,但是它很好地产生了字符串。