2013-06-27 100 views
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 

即使當我運行類型(計數器)它說它是一個整數。

這是什麼問題?

+3

錯誤在這裏:'單詞[元素]',元素不是索引,它是值本身。嘗試直接使用元素。 –

+0

確保您查看錯誤中給出的行號。然後你會注意到錯誤是用'words [element]'而不是'words [0:counter-1]'。 – SethMMorton

回答

5

您正在努力編輯words的索引elementelement是一個字符串;這是已經你想得到的物品。

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名單在這種情況下該怎麼做。

相關問題