2017-04-25 24 views
2

有没有更好的方式来写这样的事情?更简单的方法来写这坚持pylint

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 

最好在一条线上......我在哪里看?

回答

4

使用内置any

items = ('legal', 'disclaimer', 'contact', 'faq', 'terms', 'log') 
if any(x in href_link for x in items): 
    continue 

可以使用迭代直接any有一个真正的一行,但随后其更具可读性这种方式。

+0

谢谢!只要我被允许,我会立刻起来! –

+0

对不起,只是一个初学者,不能完全在网上搜索它 –

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 
1

@ MosesKoledoye的答案可能是你最好的一个:它肯定会使更好的代码将六个统一测试集中到一个迭代中。

但是你可能会问“我怎样才能打破长条件以适应79个字符?”。换句话说,您可能一直在询问代码格式,而不是如何编写代码。在这种情况下,我的首选答案是格式化它是这样的:

if (a in b or 
    c in d or 
    e not in f or 
    g not in h): 
    continue 
+0

谢谢... @ MosesKoledoye的答案更适合...但如果不可避免的,这是一个很好的方式来分割,以避免违反pylint –

相关问题