有没有办法确保只有字符'm''c''b'在一个字符串中而不诉诸正则表达式?
例如,如果用户输入“m”,程序将打印“Major”。如果用户输入'mc',程序将打印'Major,Critical'。
所以我想确保如果用户输入类似'mca'的内容,程序将打印'不适用'。
try:
if 'a' in args.findbugs:
if len(args.findbugs) > 1:
print 'findbugs: Not an applicable argument.'
else:
print 'FINDBUGS:ALL'
else:
if 'm' in args.findbugs:
print 'FINDBUGS:MAJOR'
if 'c' in args.findbugs:
print 'FINDBUGS:CRITICAL'
if 'b' in args.findbugs:
print 'FINDBUGS:BLOCKER'
except TypeError:
print "FINDBUGS: NONE"
答案 0 :(得分:5)
嗯,与你所描述的最简单的方法是:
some_string = 'mca'
if set(some_string) <= {'m', 'c', 'b'}:
# The string contains only 'm', 'c', or 'b'.
else:
# The string 'mca' does not match because of 'a'.
或者,如果您打算至少要求m
,c
或b
:
some_string = 'mca'
if set(some_string) & {'m', 'c', 'b'}:
# The string contains 'm', 'c', or 'b', so 'mca' will match.
注意:正如bgporter所指出的,在小于2.7的Python版本中,集合文字表示法不可用。如果需要支持,请使用set(('m', 'c', 'b'))
。
答案 1 :(得分:4)
这是一种在线性时间内检查它的方法。
s = "blabla"
l = 'mcb'
print all(x in l for x in s)
答案 2 :(得分:1)
原油,但这会返回你需要的东西。
input not in itertools.combinations('mcb', 1) + itertools.combinations('mcb', 2) + itertools.combinations('mcb', 3)