对于可变URL的循环列表Python

时间:2015-09-29 21:38:48

标签: python string list loops url

因此,如果我想打印网址页面的内容或只是循环浏览多个网页,只更改网址的几个部分,我该怎么办呢。鉴于以下内容:

如果我知道任何玩家的格式通常如下,减去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_NAME
  

TypeError:list indices必须是整数,而不是str

我知道url是一个列表,PLAYER_ID [0]中的内容将是一个字符串。我在这里缺少什么?

2 个答案:

答案 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_IDSPLAYER_NAMES,因此:

>>> for PLAYER_NAME, PLAYER_ID in zip(PLAYER_NAMES, PLAYER_IDS):
...     print PLAYER_NAME, PLAYER_ID
brad-brach 31000
oliver-drake 31615