我正在试着读取一个文件并比较字符。但是,当我用以下命令读取每一行后打印输出:
with open('Q1.txt') as f:
content = f.read().splitlines()我得到了'\x80‘、'\xe2’、'\x9d‘等。
这些是什么意思,我怎样才能摆脱它们?
谢谢。
发布于 2014-07-12 11:53:42
open()内置不处理Python2.x中的任何文本编码。多字节字符以原始十六进制的形式出现。您可以使用io模块来获取功能更强大的open函数,该函数提供一个参数来定义编码:
import io
with io.open(fname, 'r', encoding='utf-8') as f:
...方便的是,这在python 2.6+和3.x中都可以工作,所以如果稍后将代码移植到py3k中,您就不会遇到神秘的编码问题。顺便说一句,3.x中内置的open实际上是io.open的别名。2.6+中的后端口版本具有完全相同的功能。io模块旨在取代codecs模块,并进行了一些内部改进,因此最好在新代码中使用它的open。
发布于 2014-07-12 11:59:03
来自Unicode How-to文档:https://docs.python.org/2/howto/unicode.html
import codecs
f = codecs.open('Q1.txt', encoding='utf-8')
for line in f:
print(repr(line))在Python3中,只需使用带有上下文管理器的内置open:
with open('Q1.txt', encoding='utf-8') as f:
for line in f:
print(f)https://stackoverflow.com/questions/24709427
复制相似问题