检查字符串是否仅包含给定的字符

Air*_*Jab 2 python string

我想知道是否有更优雅的方法来检查字符串(str ='abcccbbaabcbca')是否仅包含'a','b'或'c'而不是迭代它:

for i in str:
   if i in ['a','b','c']:
      pass
   else :
      print('wrong character')
Run Code Online (Sandbox Code Playgroud)

geo*_*org 7

将两个字符串转换为集合并检查它们是否相等.如果是,则您的字符串包含aAND bAND c:

valid = set(your_string) == set('abc')...
Run Code Online (Sandbox Code Playgroud)

使用issubset以检查是否含有A,B,C的:

valid = set(your_string) <= set('abc')
Run Code Online (Sandbox Code Playgroud)

要么

valid = set(your_string).issubset('abc')
Run Code Online (Sandbox Code Playgroud)

减去集合以找出无效字符:

bad_chars = set('abcXYcba') - set('abc') # set(X,Y)
Run Code Online (Sandbox Code Playgroud)


Dan*_*iel 7

使用正则表达式:

import re
if re.search('[^abc]', string):
    print('wrong character')
Run Code Online (Sandbox Code Playgroud)


Ale*_*ton 6

您可以使用any生成器表达式:

if any(c not in 'abc' for c in _str):  # Don't use str as a name.
    print('Wrong character')
Run Code Online (Sandbox Code Playgroud)

  • OP的注意事项:您可以使用`all`检查相反的情况并删除`not`:`all(c in('a','b','c')中的c为_str) - > True (2认同)