在Python中从文本文件读取后字符串表现异常

0 投票
4 回答
632 浏览
提问于 2025-04-16 20:16

我正在读取一个文本文件,我知道它的第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函数来转换一下。

不过,从你上面的代码来看,问题更像是一个简单的索引错误。

撰写回答