作为我的python项目的一部分,我需要读取以utf-8编码的文本文件并将其拆分为列表。但是当我使用后跟撇号的字母时,list()似乎输出utf-8。比如以utf-8编码的文本文件infile.txt,内容为:
i like pi'
和代码
intext = open("path/infile.txt").read()
print intext
outnum = list(intext)
print outnum
打印出来:
i like pi’
['i', ' ', 'l', 'i', 'k', 'e', ' ', 'p', 'i', '\xe2', '\x80', '\x99']
我在OSX 10.11.6上使用Python 2.7.10。
谢谢!
答案 0 :(得分:0)
你的眼睛欺骗了你......好吧,你的终端欺骗了你,但足够近。我可以重建你的字符串并打印撇号。但实际上该字符串包含utf-8编码的字节。 Python打印出编码的字符串,我的utf-8终端对其进行解码并显示unicode字符。这是python 2的一个怪癖.Python 3在保持编码字符串和解码字符串分离方面做得更好。
>>> chars = ['i', ' ', 'l', 'i', 'k', 'e', ' ', 'p', 'i', '\xe2', '\x80', '\x99']
>>>
>>> s1 = ''.join(chars)
>>> print s1
i like pi’
>>> print repr(s1)
'i like pi\xe2\x80\x99'
由于您的文件是utf-8编码,您可以使用codecs
模块将其转换为unicode。
intext = codecs.open("path/infile.txt", encoding="utf-8").read()