-1

ファイルの文字を読み取り/カウントしようとしています(2行目にあります)

ファイルのすべての偶数行は次のようになります。

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

これまでのコードは次のとおりですが、次のエラーが表示されました。

for character in len[(line2)]: TypeError: 'builtin_function_or_method' object is not subscriptable

 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) です。角括弧は、インデックス (またはスライス) シーケンスに使用されるため、たとえば、 を使用して最初の文字を取得したり、line2を使用し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 に答える