Python - 如何确定字符串中是否只有某些字母?

时间:2014-03-15 22:26:29

标签: python string list

我们如何确定字符串是否仅由'A' 'B''C'组成? 例如,如果单词是'ABCBABCBABCBCABCA',那么就可以了,或者生成True。 但如果单词为'ABCABC%',那么它会return False

5 个答案:

答案 0 :(得分:4)

Python使用set()

使这变得非常简单
>>> def validate(my_string, ok='ABC'):
...     return set(my_string) <= set(ok)
...

>>> s = 'ABCBABCBABCBCABCA'
>>> validate(s)
True
>>> s2 = 'ABCABC%'
>>> validate(s2)
False
>>> s3 = 'ABBA'
>>> validate(s3)
True

注意:如果您想要return False,如果未使用所有白名单字符,只需将<=更改为== }。

答案 1 :(得分:2)

In [10]: def isChars(s, chars):
   ....:     if all(char in set(chars) for char in s):
   ....:         return True
   ....:     else:
   ....:         return False
   ....:     

In [11]: s = "ABCBABCBABCBCABCA"

In [12]: isChars(s, "ABC")
Out[12]: True

In [13]: s = "ABCBABCBABCBCABCA%"

In [14]: isChars(s, "ABC")
Out[14]: False

当然,正如@ larsga指出的那样,你可以将isChars缩减为一行函数:

def isChars(s, chars):
    return all(char in set(chars) for char in s)

这实际上是@jonsharpe所做的

答案 2 :(得分:1)

您可以使用正则表达式:

>>> import re
>>> pattern="^[ABC]+$"
>>> s1="ABCBABCBABCBCABCA"
>>> s2="ABCABC%"
>>> re.match(pattern,s1)
<_sre.SRE_Match object at 0x10d75f7e8>
>>> re.match(pattern,s2)
>>> 

将此包装在函数中以返回true或false是微不足道的。学习正则表达式进行字符串匹配是必不可少的。

答案 3 :(得分:1)

也许最简单的方法是:

def check(word, chars):
    """Check that a word only contains chars."""
    return all(c in chars for c in word)

答案 4 :(得分:1)

你也可以这样做:

all_abc = not your_text.translate(None, 'ABC')