python过滤字母表中的字母

时间:2015-10-08 11:01:21

标签: python string letters

我需要在python中使用一个命令来过滤字符串中的字母但不删除它们,例如:

string =raw_input("Enter the string:")
if string.startswith("a") and string.endswith("aaa"):
    print "String accepted"
else: print "String not accepted"
if "ba" in string:
    print "String accepted"
else :
    print "String is not accepted"

我应该添加什么来禁止除字符串

中的a和b之外的其他字母

5 个答案:

答案 0 :(得分:2)

你可以简单地用空字符串替换它们,并检查是否还有剩余的东西:

string = raw_input("Enter the string:")
if string.replace('a','').replace('b',''):
    print "String not accepted"
else:
    print "String accepted"

原始字符串string不会被修改。

答案 1 :(得分:1)

您可以使用集合,将字符串转换为集合,并检查其subset是否仅包含ab。示例 -

s = raw_input("Enter the string:")
validset = set('ab')
if set(s).issubset(validset):
    print "String accepted"
else: 
    print "String not accepted"

演示 -

>>> s = "abbba"
>>> validset = set(['a','b'])
>>> if set(s).issubset(validset):
...     print "String accepted"
... else: print "String not accepted"
... 
String accepted

>>> s = "abbbac"
>>> if set(s).issubset(validset):
...     print "String accepted"
... else: print "String not accepted"
... 
String not accepted

或者如评论中所示,您可以使用set.issuperset()代替。示例 -

s = raw_input("Enter the string:")
validset = set('ab')
if validset.issuperset(s):
    print "String accepted"
else: 
    print "String not accepted"

答案 2 :(得分:1)

这是正则表达式的一个很好的用法:

import re
my_string = raw_input("Enter the string:")
if re.match('^[ab]+$', my_string):
    print "String accepted"
else :
    print "String is not accepted"

这将匹配仅包含非零长度的字符ab的字符串。如果要匹配零长度字符串,请使用*代替+

答案 3 :(得分:0)

您可以使用正则表达式搜索要过滤的字母和组合。

^((?![abcd]).)*$将匹配不包含abcd的内容。

答案 4 :(得分:0)

尝试这样的事情。它允许您设置多个字母,符号等

valid_char = ['a', 'b']

def validate(s):
    for char in s:
        if char not in valid_char:
            return False
    return True

if validate(input("Enter the string:")):
    print('Sting Accepted')
else:
    print('Sting not Accepted')