如何在不使用正则表达式的情况下检查字符串是否具有某些字符

我正在尝试验证我的字符串仅包含以下值,'\n、'.' 和 'o'。它们并不都需要在那里,但如果包含这些字符之外的任何内容,我的函数应该返回 false。

我有一个包含这些字符的字符串,但它也包含“0”。但是,使用我的函数,这将返回 true。

I am primarily having issues with the first line, all others work as expected. I am not able to use regex so an alternative would be greatly appreciated!


缥缈止盈
浏览 123回答 4
4回答

胡子哥哥

使用all功能:if all (char in ".o\n" for char in s):如果您愿意,可以创建一个字符列表而不是字符串:if all (char in ['.', 'o', '\n'] for char in s):

青春有我

您可以为此使用集合:if s and set(s) - set('\n.o'):  return False# s consists entirely of \n, o and .我不清楚如果s是空的会发生什么。上面的代码将允许它;如果您想拒绝它,请将第一行更改为if set(s) - set('\n.o'):

狐的传说

这就是你所追求的吗?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 Falsefor t in tests:  assert check_string(t)

慕码人2483693

这是另一种方法: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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python