繁体   English   中英

TypeError:只能将元组(不是“ int”)连接到元组

[英]TypeError: can only concatenate tuple (not “int”) to tuple

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并重复整个过程,直到urllist的下一个url都没有了。

当我运行这段代码时,我得到了:

i += 1 TypeError: can only concatenate tuple (not "int") to tuple

代码中的i += 1在for循环之外,因此此异常使我有些惊讶。 想法?

“ for i in db”循环将一个元组分配给i。 i的范围是函数(或模块,如果这是模块作用域代码)。

Python 2中唯一具有范围的循环语法是生成器表达式。

for i in db:的for循环正在更改while循环中i的值。 在for循环中使用其他名称(更具描述性)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM