Python错误:列表索引必须是整数,而不是Unicode。

7
这是我的问题: 我试图从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个回答

13

在Python中,当你执行以下操作时

for x in L:
    ...

在循环体内,x 已经是列表元素,而不是索引。

在你的情况下,需要进行的更正只是使用 % i 替代 % s[i]

如果在其他情况下需要同时使用列表元素和索引号,则常见的Python习惯用法是:

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

2
这条消息说得很清楚。在获取列表的第i个元素时,不能使用Unicode值(也不能使用字符串),必须提供一个整数类型的i。
有一件事情不是很清楚。如果您已经将列表的每个元素分配给名为i的变量,那么为什么还要再次在列表中查找(s[i])? 我建议尝试如下方法:
for i in s: 
      self.text_field.tag_add('%s', '5.0', '6.0') % i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接