-1

我正在尝试读取/计算文件上的字符(位于第 2 行)

文件的所有偶数行都与此类似:

---------------LL---NE--HVKTHTEEK---PF-ICTVCR-KS----------

到目前为止,这是我的代码,但我收到错误消息:

对于 len [(line2)] 中的字符:TypeError:'builtin_function_or_method' 对象不可下标

 with open(filename) as f:
    for line, line2 in itertools.izip_longest(f, f, fillvalue=''):
        tokenizer=line.split()
        print line, line2
        print tokenizer[4]
        for character in len[(line2)]:
           print 't'
4

2 回答 2

0

问题是这len是一个内置函数(len(mystring)返回一个整数,它是字符串中的字符数)。您不能为其下标(即,使用方括号将导致您在问题中引用的 TypeError)。我不太确定你想在这里做什么,也许你想要:

 for character in line2:
     print character

或者你可能想要:

 for i,character in enumerate(line2):
     print i,character

从评论中,我仍然很难得到你想要的东西,但我认为你可能想要这样的东西:

tokenizer = line.replace('-',' ').split()[4]
idx = line.index(tokenizer)
count = line[:idx].count('-')
于 2012-07-30T19:28:22.963 回答
0

line2是一个字符串,并且len(line2)是一个整数( 中的字符数line2)。方括号用于索引(或切片)序列,因此例如您可以获取line2using的第一个字符line2[0],或使用 .的最后一个字符line2[-1]

len内置函数不是序列,这就是为什么在它之后使用方括号会导致您看到的错误。

您可以使用for循环进行迭代,但您必须遍历可迭代的内容。你不能迭代一个整数,所以for character in len(line2):也会失败。

请改用以下方法之一:

# loop over each character in the string
for character in line2:
    ...

# loop over [0, 1, ..., len(line2)-1]
for i in range(len(line2)):
    ...

# combination of above methods, i will be the index of character in the string
for i, character in enumerate(line2):
    ...
于 2012-07-30T19:38:23.163 回答