[英]Adding an OR condition in Findall, Lxml
我有以下findall表达式:
for r in p.findall('.//r'):
for a in r.findall('.//br'):
text+= " "
for c in r.findall('.//tab'):
text+= " "
而且,如果我遇到标签"br"
或"tab"
,我想在文本变量中添加一个空格,但是我想使用一个表达式而不是两个单独的表达式。 就像是:
for a in r.findall('.//br'|'.//tab'):
但这会返回不受支持的操作数类型错误。
TypeError: unsupported operand type(s) for |: 'str' and 'str'
正确的语法是什么?
该代码正在使用|
两个字符串操作数的运算符。
>>> 'a' | 'b'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for |: 'str' and 'str'
指定|
在字符串文字中。 并使用xpath
方法 :
for a in r.xpath('.//br|.//tab'):
如果要使用findall
,请将两个列表连接成一个列表并对其进行迭代:
for a in r.findall('.//br') + r.findall('.//table'):
或使用itertools.chain
:
import itertools
for a in itertools.chain(r.findall('.//br'), r.findall('.//table')):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.