Python如何使用OR运算符来评估字符串中的两个子串之一

时间:2014-05-02 08:16:54

标签: python logical-operators

我正在尝试编写一个脚本的一部分,该脚本将评估字符串中是否存在两个(或更多)给定字符中的任何一个。似乎逻辑OR运算符在我的IF / IN语句中始终为true。有什么想法吗?

#!/usr/bin/python
mylist = ['abc', 'def']
for mystring in mylist:
    if 'a' in mystring:
        print mystring
    if 'a' or 'b' in mystring:
        print mystring

prints:
abc
abc
def

2 个答案:

答案 0 :(得分:0)

您的代码中的问题是,'a'始终评估为True,您说:" 'a'为真或'b' in mystring为真"

def is_chars_in_strings(strings, chars):
    answer = []
    for string in strings:
        a = False
        for char in chars:
            if char in string:
                a = True
                break
        if not a:
            answer.append(string)
    return answer

print (is_chars_in_strings(['abc', 'def'], 'ab'))

答案 1 :(得分:0)

声明:if 'a' or 'b' in mystring与:if ('a') or ('b' in mystring)相同,因为if 'a':始终为真,因此对所有情况都为True。

您可以使用列表推导来解决此问题:

 if any([c in mystring for c in 'ab']):
   ...