为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

缥缈止盈 2022-06-28 17:09:50
我正在尝试验证我的字符串仅包含以下值,'\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!
查看完整描述

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):



查看完整回答
反对 回复 2022-06-28
?
青春有我

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'):


查看完整回答
反对 回复 2022-06-28
?
狐的传说

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)


查看完整回答
反对 回复 2022-06-28
?
慕码人2483693

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。


查看完整回答
反对 回复 2022-06-28
  • 4 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信