Python - 在DICT上循环并获取TraceBack错误

时间:2017-10-03 02:13:50

标签: python

我用BeautifulSoup创建了一个长度为42的DICT。我试图从标签中提取文本,我知道最后的一些是空白的。当我输入player [42] .text时,它会从REPL返回一个空白,但当我在一个循环中调用它时,我得到:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/Users/Brad/anaconda/lib/python3.6/site-packages/bs4/element.py", line 997, in __getitem__
    return self.attrs[key]
KeyError: 0

代码:

for player in players:
    name = player[0].text.strip()
    print(name)

我已经查看了Google和Stackoverflow,发现了一些If语句,但仍然没有运气。

2 个答案:

答案 0 :(得分:2)

for循环遍历players中依次分配给player每个项目的项目。尝试使用player[0]进行索引时,BeautifulSoup会将其视为使用属性名称0的属性查找。播放器标记中没有名为0的属性,因此查找失败并引发KeyError

你应该像这样循环:

for player in players:
    name = player.text.strip()
    print(name)

答案 1 :(得分:1)

您不需要指定索引。 player已经是一个单一的对象,所以你可以这样做:

name = player.text.strip() 
print(name)