通过循环进行迭代的python方法
我想以一种更具python风格的方式实现以下代码:通过循环进行迭代的python方法,python,beautifulsoup,Python,Beautifulsoup,我想以一种更具python风格的方式实现以下代码: 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')
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
odd_rows=table.findAll('tr',attrs={'class':'odd'})包含所有tr标记
偶数行=table.findAll('tr',attrs={'class':'even'})
对于奇数_行中的行:#行等于1个标记
rows.findAll('td')#查找该标记中的所有标记
对于rows-in-rows.findAll('td'):#查找一个标记
打印行#打印该标记
对于偶数行中的行:
rows.findAll('td'))
对于行中的行。findAll('td'):
打印行
行row.findAll('td')
显示我的逻辑也许:
for cls in ("odd", "even"):
for rows in table.findAll('tr', class_=cls):
for row in rows.findAll('td'):
print row
for row in table.findAll('tr', attrs = {'class':'odd'}) + table.findAll('tr', attrs = {'class':'even'}):
for cell in row.findAll('td'):
print cell
从性能的角度来看,您的原始代码更好。合并两个列表确实会使用资源
然而,除非你是为谷歌规模写代码,否则我同意这句话
程序必须是为人们阅读而编写的,而且只是为机器执行而编写的。-Hal Abelson,《计算机程序的结构和解释》 做这件事的方法不止一种。以您认为最易于阅读的方式编写代码。计算机可以计算出细节。也许:
for row in table.findAll('tr', attrs = {'class':'odd'}) + table.findAll('tr', attrs = {'class':'even'}):
for cell in row.findAll('td'):
print cell
从性能的角度来看,您的原始代码更好。合并两个列表确实会使用资源
然而,除非你是为谷歌规模写代码,否则我同意这句话
程序必须是为人们阅读而编写的,而且只是为机器执行而编写的。-Hal Abelson,《计算机程序的结构和解释》
做这件事的方法不止一种。以您认为最易于阅读的方式编写代码。计算机可以计算出细节。行
rows.findAll('td')
当您执行rows.findAll('td')
操作时,它本身不会执行任何操作。对行中的行执行操作时。findAll('td'):
将再次执行该操作。第一个是多余的。行rows.findAll('td')
本身在执行rows.findAll('td')
操作时不会执行任何操作。对行中的行执行操作时。findAll('td'):
将再次执行该操作。第一行是多余的。如果你不关心顺序,将一组类传递给class
,它将匹配其中任何一个元素。第二行应该是table。findAll
或table。findAll
?@JamesHallen:如果你使用的是BeautifulSoup3,findAll
是唯一有效的find_all
是BS4的首选语法。如果您不关心顺序,请将一个类元组传递给class_
,它将匹配具有任意一个类的元素。第二行是table.find_all
还是table.findAll
?@JamesHallen:如果您使用的是BeautifullSoup3,findAll
是唯一有效的方法find_all
是BS4的首选语法。您能解释一下“+”的作用吗?例如,如果我有3个类类型,我需要添加3个table.findAll()
?@JamesHallentable.findAll
返回一个列表,因此table.findAll(…)+table.findAll(…)
将这两个列表组合在一起,与执行[1,2]+[3,4]
没有什么不同,你能解释一下“+”的作用吗?例如,如果我有3个类类型,我需要添加3个table.findAll()
?@JamesHallentable.findAll
返回一个列表,因此table.findAll(…)+table.findAll(…)
将这两个列表组合起来,与执行[1,2]+[3,4]