【发布时间】:2016-10-26 02:58:19
【问题描述】:
我正在尝试打开、打印和读取包含特殊字符(例如 §)的文本文件。下面是我正在运行的代码:
import codecs
f = codecs.open('sample_text.txt', mode='r', encoding='utf_8')
print f.readline()
前两行有效,但第三行无效。错误代码说: Traceback(最近一次调用最后一次):
"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
有什么想法吗?如果我能澄清任何事情或添加更多细节,请告诉我。非常感谢!
【问题讨论】:
-
此文件未以 UTF-8 编码。找到实际的编码并使用它。
-
我认为 0xa7 不是有效的 utf8。你确定它是utf-8吗?另外你为什么使用编解码器而不是
open? -
@user2357112 它不在 utf-8 中。我在记事本++中更改了它。感谢您的帮助!
-
@Shivani This question 讨论 codecs.open 与内置 open 和 io.open。看起来你在 python2 中是对的,而在 python3 中
open是首选。