4 回答
TA贡献1825条经验 获得超6个赞
使用all
功能:
if all (char in ".o\n" for char in s):
如果您愿意,可以创建一个字符列表而不是字符串:
if all (char in ['.', 'o', '\n'] for char in s):
TA贡献1784条经验 获得超8个赞
您可以为此使用集合:
if s and set(s) - set('\n.o'):
return False
# s consists entirely of \n, o and .
我不清楚如果s是空的会发生什么。上面的代码将允许它;如果您想拒绝它,请将第一行更改为
if set(s) - set('\n.o'):
TA贡献1804条经验 获得超3个赞
这就是你所追求的吗?
tests = [
r'ab\cdefgho',
r'ab\cdefgh.',
r'ab\cdegh\n',
r'ab\cdc.o\n'
]
def check_string(s):
if ('\\n' in s) or ('.' in s) or ('o' in s):
if (len(s)==10 or len(s)== 14) and s[2]=='\\':
return True
else:
return False
else:
return False
for t in tests:
assert check_string(t)
TA贡献1860条经验 获得超9个赞
这是另一种方法:
allowed_chars = ['\n', '.', 'o']
your_string = '\n.o'
all([False for i in set(your_string) if i not in allowed_chars])
退货True。
并your_string = '\n.ogg'返回False。
添加回答
举报