urllist = ['http://example.com',
'http://example1.com']
i = 0
while i < len(urllist):
source = urllib.urlopen(urllist[i]).read()
regex = '(\d{3})/">(\w+\s-\s\w+)</a>' # e.g. '435', 'Tom-Jerry'
p = re.compile(regex)
db = re.findall(p, source)
db = [tuple(filter(None, t)) for t in db]
hero_id = []
for i in db:
hero_id.append(i[0])
i += 1
print hero_id
db = [tuple(filter(None, t)) for t in db]
db
是这样的元组列表:[('564', 'Tom', 'Jerry'), ('321', 'X-man', 'Hulk')]
这背后的逻辑应该如下:从 开始urllist[0]
,搜索正则表达式,db
为 中的每个元组收集 ,从元组(数字)中db
取出[0]
元素并将其附加到hero_id
列表中。完成后,将 1 添加到i
并重复下一个 url 的整个过程,urllist
而没有剩下的。
当我运行这段代码时,我得到了这个:
i += 1
TypeError: can only concatenate tuple (not "int") to tuple
i += 1
in 代码在 for 循环之外,所以这个异常让我有点吃惊。想法?