Python错误:列表索引必须是整数,而不是unicode
这是我的问题:
我正在尝试从Tkinter的文本小部件中获取所有数字(这个文本是从一个文件中读取的),我这样做:
text = self.text_field.get(1.0, 'end')
s = re.findall("\d+", text)
s 返回的内容大概是这样的:
[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
谢谢你们的帮助 :)
2 个回答
2
这段话的意思很简单。当你想从一个列表中获取第 i 个元素时,不能用 Unicode 值(或者字符串),你需要提供一个整数 i。
有一点不太清楚。如果你已经把 s
列表中的每个元素都赋值给了一个叫 i
的变量,那为什么还要在列表中再查找一次 (s[i]
) 呢?我会尝试这样做:
for i in s:
self.text_field.tag_add('%s', '5.0', '6.0') % i
13
在Python中,当你这样写
for x in L:
...
在循环的主体部分,x
已经是列表中的元素,而不是索引。
在你的情况下,正确的做法是简单地用% i
来代替% s[i]
。
如果在其他情况下你需要同时获取列表元素和索引号,常用的Python写法是:
for index, element in enumerate(L):
...