有没有更好的方式来写这样的东西?
if 'legal' in href_link or 'disclaimer' in href_link or 'contact' in href_link or 'faq' in href_link or 'terms' in href_link or 'log' in href_link:
continue
最好是一行......我在哪里看?
答案 0 :(得分:4)
使用内置any
:
items = ('legal', 'disclaimer', 'contact', 'faq', 'terms', 'log')
if any(x in href_link for x in items):
continue
您可以直接在any
中使用iterable来获得真正的单行,但这样就更具可读性。
答案 1 :(得分:1)
您可以构建正则表达式。我不确定效率,你必须与@MosesKoledoye的好答案进行比较。
要与替代品匹配,请使用管道|
。你需要像legal|disclaimer|contact|faq|terms|log
这样的模式。
您可以通过将字符串'|'
与值:
>>> values = {'legal', 'disclaimer', 'contact', 'faq', 'terms', 'log'}
>>> pattern = '|'.join(values)
>>> pattern
'terms|log|faq|legal|contact|disclaimer'
使用re
(正则表达式)模块:
>>> import re
>>> href_link = 'link_to_disclaimer.html'
>>> if re.search(pattern, href_link):
... print('matches')
matches
答案 2 :(得分:1)
@MosesKoledoye的答案可能是最适合你的答案:它确实能够将六个统一测试压缩成一个迭代的代码更好。
但你可能会问过"我如何打破长条件以适应79个字符?"。换句话说,您可能一直在询问代码格式,而不是如何编码。在这种情况下,我的首选答案是将其格式化为:
if (a in b or
c in d or
e not in f or
g not in h):
continue