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

时间:2015-03-01 21:59:49

标签: python string python-3.x binary

对于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'),它将返回True。我只是希望它返回True,当且仅当它包含'1'或'0'。

4 个答案:

答案 0 :(得分:3)

我只想使用all函数。

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

x in ('0', '1')检查x中的字符是' 0'或者' 1'。

答案 1 :(得分:0)

您希望对多个字符应用isitBinary,因为按照您编写它的方式,它会在检查完第一个字符后立即返回。

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

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)

答案 2 :(得分:0)

您的程序在遇到第一个字符后立即返回值,您甚至没有迭代整个字符串。下面的方法检查条件在任何时候是否无效,返回False否则迭代整个字符串并返回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

答案 3 :(得分:0)

使用套装:

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)

具有短路的优点(即一旦找到无效字符就会炸弹)。