因此,如果我想打印网址页面的内容或只是循环浏览多个网页,只更改网址的几个部分,我该怎么办呢。鉴于以下内容:
如果我知道任何玩家的格式通常如下,减去ID和最后一部分的几个推文: 格式如下:
http://espn.go.com/mlb/player/_/id/31000/brad-brach
让我说我知道每个球员的身份证和姓名:
PLAYER_NAME = ['brad-brach','oliver-drake',...]
PLAYER_ID = ['31000','31615',...]
for i in PLAYER_ID:
url = 'http://espn.go.com/mlb/player/_/id/'+PLAYER_ID[i]+/'+PLAYER_NAME[i]
做了什么让我们知道PLAYER_ID和PLAYER_NAME中的所有这些玩家。
如何在没有获得
的情况下迭代所有PLAYER_ID和PLAYER_NAMETypeError:list indices必须是整数,而不是str
我知道url是一个列表,PLAYER_ID [0]中的内容将是一个字符串。我在这里缺少什么?
答案 0 :(得分:1)
从索引列表中选择一个项目而不是另一个列表PLAYER_NAME ['31000']的字符串?!
PLAYER_NAME = ['brad-brach','oliver-drake',...]
PLAYER_ID = ['31000','31615',...]
for i in xrange(len(PLAYER_NAME)):
url = 'http://espn.go.com/mlb/player/_/id/{}/{}'.format(PLAYER_ID[i], PLAYER_NAME[i])
对于一个更优雅的解决方案,使用zip,感谢@Pynchia;)
PLAYER_NAME = ['brad-brach','oliver-drake',...]
PLAYER_ID = ['31000','31615',...]
URL_PATTERN = 'http://espn.go.com/mlb/player/_/id/{}/{}'
for p_name, p_id in zip(PLAYER_NAME, PLAYER_ID):
url = URL_PATTERN.format(p_id, p_name)
答案 1 :(得分:0)
for something in container
将为您提供容器中的每件商品;这是一种非常干净的迭代方式:
>>> for i in PLAYER_ID:
... print i
31000
31615
当您使用PLAYER_ID[i]
时,您真正想要的是索引。您可以通过枚举列表中的每个元素来获得它:
>>> for i, element in enumerate(PLAYER_ID):
... print i, element
0 31000
1 31615
但是,您并不真正需要索引,因为您已经有了获取播放器ID的简洁方法。
正如我在评论中提到的,更好的名称将是PLAYER_IDS
和PLAYER_NAMES
,因此:
>>> for PLAYER_NAME, PLAYER_ID in zip(PLAYER_NAMES, PLAYER_IDS):
... print PLAYER_NAME, PLAYER_ID
brad-brach 31000
oliver-drake 31615