gpt4 book ai didi

python - 为什么 Python3 在读取 Python2 没有的文本文件时会出现 UnicodeDecodeError?

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:58 24 4
gpt4 key购买 nike

我正在阅读一个文本文件。我在 python2 上一直做得很好,但我决定改用 python3 运行我的代码。

我读取文本文件的代码是:

neg_words = []
with open('negative-words.txt', 'r') as f:
for word in f:
neg_words.append(word)

当我在 python 3 上运行这段代码时,出现以下错误:

UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-14-1e2ff142b4c1> in <module>()
3 pos_words = []
4 with open('negative-words.txt', 'r') as f:
----> 5 for word in f:
6 neg_words.append(word)
7 with open('positive-words.txt', 'r') as f:

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/codecs.py in
decode(self, input, final)
319 # decode input (taking the buffer into account)
320 data = self.buffer + input
--> 321 (result, consumed) = self._buffer_decode(data, self.errors, final)
322 # keep undecoded input until the next call
323 self.buffer = data[consumed:]

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xef in position 3988: invalid continuation byte

在我看来,python2 可以毫无问题地解码某种形式的文本,而 python3 则不能。

有人可以解释一下 python2 和 python3 在这个错误方面的区别吗?为什么它出现在一个版本中而不出现在另一个版本中?我该如何阻止它?

最佳答案

您的文件不是 UTF-8 编码的。找出使用的编码并在打开文件时明确说明:

with open('negative-words.txt', 'r', encoding="<correct codec>") as f:

在 Python 2 中,str 是一个二进制字符串,包含编码数据,而不是 Unicode 文本。如果您使用 import io 然后使用 io.open(),您会遇到同样的问题,或者如果您尝试解码您使用 读取的数据code>word.decode('utf8').

您可能想深入了解 Unicode 和 Python。我强烈推荐 Ned Batchelder 的 Pragmatic Unicode .

关于python - 为什么 Python3 在读取 Python2 没有的文本文件时会出现 UnicodeDecodeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49045774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com