Python中的字符串包含检查

0 投票
2 回答
513 浏览
提问于 2025-04-16 21:54

我有一段这样的代码……

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

更简洁的写法是使用 any() 函数:

    if link.has_key('href'):
        href = link['href'].upper()
        if any(x in href for x in a):
            print link['href']
1

你没有告诉我们在哪个输入上它不工作。

第一个版本和第二个版本之间一个明显的区别是,第二个版本没有使用 .upper()这是不是导致问题的原因呢?

另外,为什么你要把 in 替换成 __contains__ 也不太清楚,但这应该无关紧要。

撰写回答