有条件地迭代列表中的项目的 Pythonic 方法

Chr*_*ell 4 python lxml

一般编程新手,所以我可能会以错误的方式解决这个问题。我正在编写一个 lxml 解析器,我想在其中省略解析器输出中没有内容的 HTML 表行。这就是我所拥有的:

for row in doc.cssselect('tr'):
    for cell in row.cssselect('td'):
        sys.stdout.write(cell.text_content() + '\t')
    sys.stdout.write '\n'
Run Code Online (Sandbox Code Playgroud)

write()东西是暂时的。我想要的是循环只返回行 where tr.text_content != ''。所以我想我在问如何写出我的大脑认为应该是 'for a in b if a != x' 但这不起作用。

谢谢!

eum*_*iro 5

for row in doc.cssselect('tr'):
    cells = [ cell.text_content() for cell in row.cssselect('td') ]
    if any(cells):
        sys.stdout.write('\t'.join(cells) + '\n')
Run Code Online (Sandbox Code Playgroud)

仅当至少有一个包含文本内容的单元格时才打印该行。