簡體   English   中英

檢查字符串是否只包含給定的字符

[英]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.

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