如何查看字符串是否仅包含某些字符,如果包含,return True,否则 return False:Python

How to see if a string only contains certain characters, and if they do, return True, else return False: Python

对于 python 3.4.1,您将如何查找字符串中是否包含某些字符?我试过这样做:

def isItBinary(myString):
    for ele in myString:
        if ele == '1' or if ele == '0':
            return True
        else:
            return False

此代码的问题在于,如果我键入 isItBinary('102'),它将 return 为真。我只希望它 return 当且仅当它包含“1”或“0”时才为真。

您想对多个字符应用 isitBinary,因为按照您编写的方式,一旦选中第一个字符,它就会 return。

一个简单的方法来做你想做的事:

def binaryChar(myCharacter):
    return myCharacter == '1' or myCharacter == '0'

然后将其应用于字符串中的所有字符,如下所示:

def isItBinary(myString):  
    return all(binaryChar(c) for c in myString)

当然,这些可以用更易读的方式简化:

def isItBinary(myString):
    return all(c in '01' for c in myString)

或通过 lambda 函数:

isItBinary = lambda myString: all(c in '01' for c in myString)

我只想使用 all 函数。

def isItBinary(myString):
    return all(x in ('0', '1') for x in myString)

x in ('0', '1') 检查 x 中的字符是“0”还是“1”。

你的程序一遇到第一个字符就返回值,你甚至没有遍历整个字符串。下面的这种方法检查条件是否在任何时候无效,returns False 否则迭代整个字符串和 returns True.

def isItBinary(myString):
    for ele in myString:
        if not ele in ("0","1"):
            return False
    return True


print isItBinary("102")
>>> False
print isItBinary("101")
>>> True

使用集:

def is_it_binary(s):
    return not (set(s) - set("01"))

如果从字符串构造的集合包含任何不在第二个集合中的字符,则减法给出一个非空集合。否则,如果它仅包含第二组中的字符,您将得到一个空集,not 将翻转为 True

或者只是:

def is_it_binary(s):
    allowed = set("01")
    return all(c in allowed for c in s)

它具有短路的优点(即一旦发现无效字符就会爆炸)。