我需要在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之外的其他字母答案 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是否仅包含a
和b
。示例 -
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"
这将匹配仅包含非零长度的字符a
和b
的字符串。如果要匹配零长度字符串,请使用*
代替+
。
答案 3 :(得分:0)
您可以使用正则表达式搜索要过滤的字母和组合。
^((?![abcd]).)*$
将匹配不包含a
,b
,c
或d
的内容。
答案 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')