![](/img/trans.png)
[英]How to check if a string contains only characters from a given set in python
[英]Check if a string contains only given characters
我想知道是否有更優雅的方法來檢查字符串 (str = 'abcccbbaabcbca') 是否只包含 'a'、'b' 或 'c' 而不是迭代它:
for i in str:
if i in ['a','b','c']:
pass
else :
print('wrong character')
您可以將any
與生成器表達式一起使用:
if any(c not in 'abc' for c in _str): # Don't use str as a name.
print('Wrong character')
將兩個字符串轉換為集合並檢查它們是否相等。 如果是,則您的字符串包含a
AND b
AND c
:
valid = set(your_string) == set('abc')...
使用issubset
檢查它是否包含 a、b、c 中的任何一個:
valid = set(your_string) <= set('abc')
或者
valid = set(your_string).issubset('abc')
減去集合以找出無效字符:
bad_chars = set('abcXYcba') - set('abc') # set(X,Y)
使用正則表達式:
import re
if re.search('[^abc]', string):
print('wrong character')
隨意模擬,因為這會直接跳轉到正則表達式,但測試是否與"^[abc]+$"
匹配
re.match('^[abc]+$', 'string')
您還可以使用string.translate
:
import string
s = 'abcccbbaabcbca'
# translate character to empty ""
t = string.maketrans("","")
# if non-abc character is found s.translate will become the bad characters
if s.translate(t, 'abc'):
print ('wrong character')
正如@PadraicCunningham 所指出的
# for one off usage, you can skip making a translation table.
if s.translate(None, 'abc'):
…
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.