我正在尝试打开,打印和读取包含特殊字符(如§)的文本文件。以下是我正在运行的代码:
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
有什么想法吗?如果我能澄清任何内容或添加更多细节,请告诉我。非常感谢你!
答案 0 :(得分:1)
要扩展评论者所说的内容,您需要找出文件的编码。我知道这样做最简单的方法是:
loadNews()
行中检查要使用的编解码器codecs documentation,而不是utf_8
。步骤1-3的屏幕截图:
答案 1 :(得分:0)
看起来你在Windows机器上,文本文件的编码可能与UTF-8不同,你可能想尝试cp1252 / ISO-8859-1用于解码字节串,然后使用utf再次编码-8。
您还可以在此处查看有关如何阅读文件的最佳做法的建议 - Difference between open and codecs.open in Python