“for line in...”导致 UnicodeDecodeError: 'utf-8' 编解码器无法解码字节
尝试时使用“for line in open('filename')”语法迭代文本文件的行时,程序员可能会遇到 UnicodeDecodeError,指示“utf-8”编解码器无法解码特定字节。当文本文件的编码与“utf-8”编解码器假定的编码不匹配时,通常会发生此错误。
解决问题
解决此问题错误,打开文本文件时需要指定正确的编码。这可以通过在 open() 函数中添加“encoding=”参数来实现,如下所示:
<code class="python">for line in open('filename', encoding='utf-8'): # Read each line</code>
在某些情况下,指定的编码可能不正确,从而导致相同的错误。为了确定适当的编码,程序员可以检查文本文件并识别所使用的字符集。
例如,提问者提供的代码片段:
<code class="python">for line in open('u.item'): # Read each line</code>
无法解码文本文件,因为编码被错误地假定为“utf-8”。通过检查文本文件,发现正确的编码是“ISO-8859-1”。修改代码如下解决了问题:
<code class="python">for line in open('u.item', encoding='ISO-8859-1'): # Read each line</code>
以上是为什么我在迭代文本文件时收到 UnicodeDecodeError: \'utf-8\' 编解码器无法解码字节?的详细内容。更多信息请关注PHP中文网其他相关文章!