从python中的文本文件读取后,出现奇怪的字符串行为

| 我正在阅读一个文本文件,我知道它的第38行是\“ Uncalibrated Peaks:\”,并且我知道它存储在列表的第38个元素中。我已经检查过它们了,没有索引问题。 我正在通过以下代码读取文本文件
import os

fd = open(\'Report.txt\')
contents = fd.readlines()
fd.close()

for ind, line in enumerate(contents):
    line = line.split(\" \")
    contents[ind] = line
但是我们检查第38行第一个单词的长度
print len(contents[38][0])
25,我知道此命令是提到列表中的正确元素的,所以没有索引问题
print len(\'Uncalibrated\')
12 !!尽管理论上它们应该是相同的。似乎每个字符在字符串向量中占2位,这似乎是由于unicodeing问题     
已邀请:
        通常,如果字符串中的字符看起来像“太宽”,则可能是一个unicode文件。尝试使用
unicode
函数进行转换。 看看上面的代码,它看起来更像是一个简单的索引错误。     
        你试过
contents[37][0]
吗?第38行应在索引37处,因为索引从0开始。     
        尝试
if ind == 38:
   print line
line = line.split()
确认它是您想要的行并将其拆分。就像上面的海报说的那样,您可能也误读了这行。     
        
fd = open(\'foo.html\')
contents = fd.readlines()
fd.close()

for ind, line in enumerate(contents):
    line = line.split(\" \")
    contents[ind] = line

print contents,\'\\n\\n------------------\'


fd = open(\'foo.html\')
li = fd.readlines()
fd.close()

a = map(lambda x: x.split(\" \"),li)
print a,\'\\n\',a==contents,\'\\n\\n------------------\'


fd = open(\'foo.html\')
b = [line.split(\" \") for line in fd]
fd.close()

print b,\'\\n\',b==contents
    

要回复问题请先登录注册