String.Contains在Python中

时间:2011-07-20 07:25:04

标签: python

我有这样的代码......

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

但是这没用。我的意思是没有语法/编译/运行时错误。没有输出。我做错了什么?

2 个答案:

答案 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']