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

BeautifulSoup,get_text(),splitlines(),如何删除pythonic one liner中的空行?,python,beautifulsoup,Python,Beautifulsoup,是否有一行代码可以从soup对象中获取文本,然后使用splitlines获取html中每一行的列表。然后删除列表中仅有换行符的所有多余空行 我不想写另一个for循环来通过两次并清理新行。此外,任何其他pythonic方法来做到这一点是赞赏的 soup = BeautifulSoup('myhtml.html', 'html.parser') sections = soup.findAll(div, class_='section') lines = [] for section in secti

是否有一行代码可以从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()

尝试列表理解:

lines = lines + [l for l in sections.get_text().splitlines() if l]
或者,一个
过滤器

lines = lines + list(filter(None, sections.get_text().splitlines()))
此外,您可以将其缩短为

lines += ...

如果要消除循环,请执行以下操作:

lines = [l for section in soup.findAll(div, class_='section')\
              for l in section.get_text().splitlines() if l]
这是一条真正的单行线:)


如果你想玩脏的,那么
[l代表section中的section,l代表section中的l.get_text().splitlines(),如果l]
:)@c怎么样ᴏʟᴅsᴘᴇᴇᴅ 触碰@DYZ FYI-当我点击你的个人资料/简历中的数据科学书籍链接时,我收到一个登录页面,无法看到该书。
from itertools import chain
lines = list(chain.from_iterable([l for l in section.get_text().splitlines() if l] 
                   for section in soup.findAll(div, class_='section')))