BeautifulSoup,get_text(),splitlines(),如何删除pythonic oneliner中的空行?

Jos*_*uce 3 python beautifulsoup

是否有一个衬里,我可以从 soup 对象获取文本,然后使用 splitlines 获取 html 中每一行的列表。然后删除列表中所有多余的空行,其中只有换行符。

我不想编写另一个 for 循环来传递两次并清理新行。另外,任何其他 pythonic 方式来做到这一点都是值得赞赏的。

soup = BeautifulSoup('myhtml.html', 'html.parser')
sections = soup.findAll(div, class_='section')
lines = []
for section in sections:
    lines = lines + section.get_text().splitlines()
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 5

尝试列表理解:

lines = lines + [l for l in sections.get_text().splitlines() if l]
Run Code Online (Sandbox Code Playgroud)

或者,filter

lines = lines + list(filter(None, sections.get_text().splitlines()))
Run Code Online (Sandbox Code Playgroud)

此外,您可以将其缩短为

lines += ...
Run Code Online (Sandbox Code Playgroud)

如果你想摆脱循环,你可以这样做:

lines = [l for section in soup.findAll(div, class_='section')\
              for l in section.get_text().splitlines() if l]
Run Code Online (Sandbox Code Playgroud)