python3 上的 UnicodeDecodeError

UnicodeDecodeError on python3

我目前正在尝试在一个非常大的 .txt 文件(几百万行文本)上使用一些简单的正则表达式。最简单的导致问题的代码:

file = open("exampleFileName", "r")  
    for line in file:  
        pass

错误信息:

Traceback (most recent call last):
  File "example.py", line 34, in <module>
    example()
  File "example.py", line 16, in example
    for line in file:
  File "/usr/lib/python3.4/codecs.py", line 319, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 7332: invalid continuation byte

我该如何解决这个问题? utf-8 是错误的编码吗?如果是,我怎么知道哪个是正确的?

谢谢并致以最诚挚的问候!

它似乎是无效的 UTF-8,您应该尝试使用 latin-1 编码来阅读。尝试

file = open('exampleFileName', 'r', encoding='latin-1') 

无法即时识别编码。因此,要么使用我作为评论写的方法,要么使用类似的结构(如另一个答案所建议的),但这是一个疯狂的镜头:

try:
    file = open("exampleFileName", "r")
except UnicodeDecodeError:
    try:
        file = open("exampleFileName", "r", encoding="latin2")
    except: #...

依此类推,直到您测试了 Standard Python Encodings 的所有编码。

所以我认为没有必要为这个嵌套的地狱而烦恼,只需file -bi [filename]一次,复制编码并忘记这个。

UPD. 实际上,我找到了 another Whosebug answer 如果你在 Windows[=24 上,你可以使用它=].