2015-09-29 54 views
2

因此,如果我想打印一个url页面的内容,或者只是循环遍历很多,只更改URL的几个片段,我该怎么做。鉴于以下几点:For循环列表变量URL的Python列表

如果我知道的格式通常将是任何球员以下,减去几个tweeks的ID和最后一个部分: 格式如下:

http://espn.go.com/mlb/player/_/id/31000/brad-brach 

可以说,我知道每个球员ID和姓名:

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 must be integers, not str

我知道,URL是一个列表,并在其中PLAYER_ID [0]将是一个字符串的内容。我在这里错过了什么?

+0

在PLAYER_NAME播放器:是你在找什么 – FirebladeDan

+0

现在把球员在你的URL字符串。不是列表 – FirebladeDan

+0

您正在将列表(player_id和player_name)添加到字符串(url) – Psytho

回答

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]) 

而对于一个更优雅的解决方案使用拉链,感谢@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) 
+0

我相信这是最接近OP想要的......虽然很难从他们的问题中得知。 – Sam

+0

所以我有点接近 –

+0

@ RossJohnson-是! – FirebladeDan

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 
+1

因此,要打印这些球员的统计数据,我需要for循环来执行两个球员的统计。我需要阅读自定义的网址。所以它会在第一次迭代中读取:url:http://espn.go.com/mlb/player/_/id/31000/brad-brach然后在第二次迭代中url将是http://espn.go。 com/mlb/player/_/id/31615/oliver-drake –

+0

听起来不错,是的。 –

+0

@RossJohnson嘿,这些网址实际上工作!不错的工作。 –