我正在搜索HTML源代码中包含"up"
或"down"
的行。只有一个单词代码正在运行。但是如果我想搜索包含多个单词的行,那么如何在Python 3.4.2中进行搜索?
links = lambda tag: getattr(tag, 'name', None) == 'a' and 'up|down' in tag.get_text().lower() and 'href' in tag.attrs
答案 0 :(得分:1)
您始终可以使用常规功能而不是简短的lambda
表单。
在tag
的文字中定义要检查的字词列表,然后使用any()
+ in
检查文字中是否存在字词:
stop_words = ['up', 'down']
def filter_links(tag):
if getattr(tag, 'name', None) == 'a' and 'href' in tag.attrs:
text = tag.get_text().lower()
return any(item in text for item in stop_words)
return False
答案 1 :(得分:0)
您可以使用re.search
查找单词列表
lambda tag: (getattr(tag, 'name', None) == 'a' and
re.search("up|down", tag.get_text().lower()) and
'href' in tag.attrs)
请注意,例如"downsize"
在这种情况下也会匹配。如果您希望单独的单词up
或down
出现,则表达式为:
re.search("\\b(up|down)\\b", ...)
因为\b
在这种情况下意味着“单词边界”