我有这样的代码......
if active == 1: // A flag which is set if a Site is Active
for link in BeautifulSoup(content, parseOnlyThese=SoupStrainer('a')):
if link.has_key('href'):
if 'MY_TEXT' in link['href'].upper(): //Check if the link has the string MY_TEXT in it. If it has print it and break the loop
print link['href']
break
现在,我想改进此代码以检查MY_TEXT1,MY_TEXT2和MY_TEXT3。我不想写很多IF语句。相反,我做了类似的事情
a = ['MY_TEXT1', 'MY_TEXT2', 'MY_TEXT3']
if active == 1: // A flag which is set if a Site is Active
for link in BeautifulSoup(content, parseOnlyThese=SoupStrainer('a')):
if link.has_key('href'):
for x in a:
if link['href'].__contains__(x):
print link['href']
break
但是这没用。我的意思是没有语法/编译/运行时错误。没有输出。我做错了什么?
答案 0 :(得分:1)
你没有告诉我们它不起作用的输入。
第一版和第二版之间的一个明显区别是第二版缺少.upper()
。 这是导致问题的原因吗?
还不清楚为什么要将in
替换为__contains__
,但这无关紧要。
答案 1 :(得分:0)
更简洁的方法是使用any()
:
if link.has_key('href'):
href = link['href'].upper()
if any(x in href for x in a):
print link['href']