Thinks counter是一个字符串,而不是整数

时间:2013-06-27 20:53:52

标签: python types

我正在尝试使用以下内容提取制表符分隔文件的前几个元素:

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),它也表示它是一个整数。

问题是什么?

1 个答案:

答案 0 :(得分:5)

您正尝试使用wordselement编制索引。 element是一个字符串; 已经你想要的项目。

for循环依次为words提供每个元素,并将其分配给element变量。 element不是words列表的整数索引。

请注意,你的计数器将超出界限;如果您想要将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列表做些什么。