这对您没有帮助
sys.setdefaultencoding('utf-8'),这会使事情进一步混乱-这是一个讨厌的黑客,您需要将其从代码中删除。
错误正在发生,因为
line是一个字符串,您正在调用
enpre()。
enpre()仅当字符串是Unipre时才有意义,因此Python会尝试首先使用默认编码(在您的情况下为
UTF-8,但应为)将Unipre转换为Unipre
ASCII。无论哪种方式,
0x80无效的ASCII或UTF-8都将失败。
0x80在某些字符集中有效。在
windows-1252/
cp1252是
€。
这里的窍门是从头到尾理解代码的数据编码。此刻,您还有太多机会。Unipre字符串类型是Python的一种便捷功能,它使您可以解码已编码的字符串,而无需进行编码,直到需要写入或传输数据为止。
使用该
io模块以文本模式打开文件并对其进行解码-
不再
.depre()!您需要确保传入数据的编码是一致的。您可以在外部对其重新编码,也可以在脚本中更改编码。这是我将编码设置为
windows-1252。
with io.open(file_name, 'r', encoding='windows-1252') as twitter_file: for line in twitter_file: # line is now a <type 'unipre'> tweet = json.loads(line)
该
io模块还提供通用换行符。这意味着将
rn被检测为换行符,因此您不必注意它们。



