使用Python 3的readlines()进行Unicode错误处理

Bob*_*Bob 21 python encoding text python-3.x

我在阅读文本文件时不断收到此错误.是否可以处理/忽略它并继续?

UnicodeEncodeError:'charmap'编解码器无法解码位置7827中的字节0x81:字符映射到未定义.

Cha*_*ffy 43

在Python 3中,在创建文件对象时传递适当的errors=值(例如errors=ignoreerrors=replace)(假设它是 - 的子类io.TextIOWrapper- 如果不是,请考虑将其包装在一个!); 另外,考虑传递更可能的编码charmap(当你不确定时,utf-8总是一个好的开始).

例如:

f = open('misc-notes.txt', encoding='utf-8', errors='ignore')
Run Code Online (Sandbox Code Playgroud)

在Python 2中,read()操作只返回字节; 然后,诀窍是解码它们以使它们成为一个字符串(如果你这样做,实际上,想要字符而不是字节).如果您对其实际编码没有更好的猜测:

your_string.decode('utf-8', 'replace')
Run Code Online (Sandbox Code Playgroud)

...替换未处理的字符,或

your_string.decode('utf-8', 'ignore')
Run Code Online (Sandbox Code Playgroud)

简单地忽略它们.

也就是说,找到并使用他们的真实编码(而不是猜测utf-8)将是首选.