Python readline不使用编解码器

时间:2016-06-23 16:39:12

标签: python readline

我正在尝试打开,打印和读取包含特殊字符(如§)的文本文件。以下是我正在运行的代码:

    import codecs
    f = codecs.open('sample_text.txt', mode='r', encoding='utf_8')
    print f.readline()

前两行有效,但第三行没有。错误代码说: 回溯(最近一次调用最后一次):

"C:\Users\mallikk\Documents\Python Scripts\special_char_test.py", line 6, in <module>
    print f.readline()
  File "C:\Anaconda2\lib\codecs.py", line 690, in readline
    return self.reader.readline(size)
  File "C:\Anaconda2\lib\codecs.py", line 545, in readline
    data = self.read(readsize, firstline=True)
  File "C:\Anaconda2\lib\codecs.py", line 492, in read
    newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa7 in position 13: invalid start byte

有什么想法吗?如果我能澄清任何内容或添加更多细节,请告诉我。非常感谢你!

2 个答案:

答案 0 :(得分:1)

要扩展评论者所说的内容,您需要找出文件的编码。我知道这样做最简单的方法是:

  1. 在Firefox中打开文件。
  2. 右键单击页面,然后选择&#34;查看页面信息&#34;
  3. 查看&#34;文字编码&#34;是
  4. 然后,您可以在loadNews()行中检查要使用的编解码器codecs documentation,而不是utf_8
  5. 步骤1-3的屏幕截图:

    screenshot

答案 1 :(得分:0)

看起来你在Windows机器上,文本文件的编码可能与UTF-8不同,你可能想尝试cp1252 / ISO-8859-1用于解码字节串,然后使用utf再次编码-8。

您还可以在此处查看有关如何阅读文件的最佳做法的建议 - Difference between open and codecs.open in Python