簡體   English   中英

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

[英]Python - How to determine if only certain letters are in a string?

我們怎樣才能確定一個字符串只包含'A' 'B''C' 例如,如果單詞是'ABCBABCBABCBCABCA' ,則表示正確,或產生True 但是,如果單詞是'ABCABC%'那么它將return False

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 ,只需將<=更改為==

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所做的

您可以使用正則表達式:

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

將其包裝在函數中以返回true或false是微不足道的。 學習用於字符串匹配的正則表達式至關重要。

也許最簡單的方法是:

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

您也可以這樣做:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM