【发布时间】:2015-01-06 08:38:05
【问题描述】:
有人可以帮我理解beautifulsoup3 文档中的这段代码吗?特别是我不明白方括号中的部分。代码来自这个网址:http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
我不明白方括号,因为我认为方括号是用来制作列表的,它的内容会创建一个列表吗?此外,它似乎没有将列表分配给任何东西。有方括号而不将它们分配给任何东西的目的是什么?另外,我不明白这个组件:text=lambda text:isinstance(text, Comment),但我想我可能能够自己弄清楚这部分。
from BeautifulSoup import BeautifulSoup, Comment
soup = BeautifulSoup("""1<!--The loneliest number-->
<a>2<!--Can be as bad as one--><b>3""")
comments = soup.findAll(text=lambda text:isinstance(text, Comment))
[comment.extract() for comment in comments]
print soup
# 1
# <a>2<b>3</b></a>
好的,这是为了理解列表,所以,正在制作列表吗?但是没有被使用?他们为什么要这样做?另外,您何时以及为什么要在“for”一词之前添加任何内容?就像他们在那里做的那样。通常我会在开头看到“for”,之前什么都没有。另外,感谢您对 lambda 函数的精彩解释,我知道它制作了某种迷你函数,但我还不太熟悉,它有助于了解您如何将其重写为普通函数。
【问题讨论】:
-
方括号的行是list comprehension
-
哦,很奇怪,我刚试过这个:
[print("stuff") for x in range(0,10)],它起作用了,所以列表理解方括号的“副作用”是你可以为循环创建一行?
标签: python html python-3.x beautifulsoup html-parsing