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

gol*_*ine 0 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)
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我收到此错误:

TypeError: list indices must be integers, not str
logout
Run Code Online (Sandbox Code Playgroud)

即使我运行类型(计数器),它说它是一个整数.

有什么问题?

Mar*_*ers 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])
Run Code Online (Sandbox Code Playgroud)

虽然words在这种情况下不清楚你想要对列表做什么.