在Python中从文本文件读取后字符串表现异常
我正在读取一个文本文件,我知道它的第38行是“未校准的峰值:”,而且我知道它存储在我的列表的第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
!! 虽然理论上它们应该是一样的。看起来每个字符在字符串向量中占用了两个位置,这似乎是因为编码的问题。
4 个回答
0
试试看
if ind == 38:
print line
line = line.split()
确认一下这行是你想要的,然后把它分开。就像上面那位朋友说的,你可能也会误解这一行的意思。
1
你试过用 contents[37][0]
吗?因为索引是从0开始的,所以第38行应该在索引37的位置。
3
一般来说,如果你觉得字符串里的字符“太宽”了,可能是因为你在用unicode文件。你可以试着用unicode
函数来转换一下。
不过,从你上面的代码来看,问题更像是一个简单的索引错误。