0

以下を使用して、タブ区切りファイルの最初のいくつかの要素を抽出しようとしています。

words = []
name_elements = []
counter = 0

for line in f:
    words = line.split()
    for element in words:
        counter = counter + 1
        if words[element].isupper():
           name_elements = words[0:counter-1]

print type(counter)

このコードを実行すると、次のエラーが発生します。

TypeError: list indices must be integers, not str
logout

type(counter) を実行すると、整数だと表示されますが。

問題は何ですか?

4

1 に答える 1

5

で索引words付けしようとしていますelementelement文字列です。それはすでにあなたが手に入れたかったアイテムです。

forループは順番に各要素を与え、それを変数wordsに割り当てます。リストへの整数インデックスではありません。elementelementwords

カウンターが範囲外になることに注意してください。words要素とともにリストへのインデックスが必要な場合は、enumerate()関数を使用します。name_elementsまた、リストをからのスライスに置き換えていますwords。代わりにリストを拡張したいかもしれません:

for line in f:
    words = line.split()
    for counter, element in enumerate(words):
        if element.isupper():
            name_elements.extend(words[:counter-1])

wordsこの場合、リストで何をしたかったのかは明確ではありません。

于 2013-06-27T20:55:15.780 に答える