Pythonic迭代循环的方法

时间:2013-06-14 01:32:37

标签: python beautifulsoup

我想用更多的pythonic方式实现以下代码:

odd_rows = table.findAll('tr', attrs = {'class':'odd'}) #contain all tr tags
even_rows = table.findAll('tr', attrs = {'class':'even'})

for rows in odd_rows:              #rows equal 1 <tr> tag 
    rows.findAll('td')             #find all the <td> tags located in that one <tr> tag
    for row in rows.findAll('td'): #find one <td> tag
        print row                  #print that <td> tag

for rows in even_rows:
    rows.findAll('td')
    for row in rows.findAll('td'):
        print row

row.findAll('td')显示我的逻辑

2 个答案:

答案 0 :(得分:3)

for cls in ("odd", "even"):
    for rows in table.findAll('tr', class_=cls):
        for row in rows.findAll('td'):
            print row

答案 1 :(得分:2)

也许:

for row in table.findAll('tr', attrs = {'class':'odd'}) + table.findAll('tr', attrs = {'class':'even'}):
    for cell in row.findAll('td'):
        print cell

从性能角度来看,您的原始代码更好。合并两个列表确实会使用资源。

但是,除非您为Google规模编写代码,否则我同意此引用。

  

必须编写程序供人们阅读,并且只能偶然让机器执行     - Hal Abelson,计算机程序的结构和解释

有多种方法可以做到这一点。以您认为最易读的方式编写代码。计算机可以弄清楚细节。