如何解决从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,b==contents
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。