[英]How to only allow digits, letters, and certain characters in a string in 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.