2011-05-10 96 views
5

有我的問題: 我試圖從一個Tkinter的文本控件得到所有的數字(GET是從一個文件中的文本)是這樣的:Python的錯誤:列表索引必須是整數,不是Unicode

text = self.text_field.get(1.0, 'end')  
s = re.findall("\d+", text) 

小號回報是這樣的:

[u'0', u'15', u'320', u'235', u'1', u'1', u'150', u'50', u'2', u'2', u'20'] 

比我嘗試添加標籤的文本組件:

for i in s: self.text_field.tag_add('%s', '5.0', '6.0') %s[i] 

,並給出了一個錯誤:

list indices must be integers, not unicode 

thanx的幫助我:)

回答

11

在Python當你做

for x in L: 
    ... 

體內循環x裏面已經是列表元素,而不是索引。

在你的情況下,需要更正的只是使用% i而不是% s[i]

如果在其他情況下,你需要兩個列表元素和索引次數的公共Python的成語是:

for index, element in enumerate(L): 
    ... 
2

的消息說,這一切。當獲取列表的第i個元素時,您不能使用unicode值(也不能使用字符串值),您需要提供一個整數i。

有一點不清楚。如果您已將s列表的每個元素分配給名爲i的變量,那麼爲什麼您再次在列表中查找(s[i])?我會嘗試:

for i in s: 
     self.text_field.tag_add('%s', '5.0', '6.0') % i 
相關問題