字符串必须包含多个单词

时间:2014-02-26 19:26:23

标签: python string parsing

我是Python的新手,我有一个问题。

我正在制作一个简单的聊天机器人,我希望它能够回答问题和类似问题。

以下是一个例子:

def ChatMode():
    ChatCommand = raw_input ("- user: ")
    if "quit" in ChatCommand :
        print "Lucy: See you later."
        print ""
        UserCommand()
    else :
        print "Lucy: sorry i don\'t know what you mean."
        ChatMode()

对于更高级的东西,我需要它来检查2个字符串。

我尝试了一些类似的事情:

  def ChatMode() :
      ChatCommand = raw_input ("- user: ")
      if "quit" + "now" in ChatCommand :
          print "Lucy: See you later."
          print ""
          UserCommand()
      else :
          print "Lucy: sorry i don\'t know what you mean."
          ChatMode()

但那造成了"quitnow"

我还尝试用+替换&,但这给了我一个错误:

  

TypeError:&:'str'和'str'不支持的操作数类型

有没有人有短代码才能这样做?我不想要5个以上的句子,我想尽量缩短句子。

3 个答案:

答案 0 :(得分:2)

使用单独的条款来检查"quit""now"是否都在ChatCommand中。

if "quit" in ChatCommand and "now" in ChatCommand:

请注意,在Python中,logical and operator&&是and&bitwise and

答案 1 :(得分:1)

if "quit" in ChatCommand and "now" in ChatCommand:

另外,作为一种风格,Python CamelCase通常会保留给Class es。

答案 2 :(得分:1)

使用all()

if all(word in ChatCommand for word in ("quit", "now")):

如果您想避免在quit内匹配quite,可以使用正则表达式:

import re
if all(re.search(regex, ChatCommand) for regex in (r"\bquit\b", r"\bnow\b")):

因为\b word boundary anchors仅匹配单词的开头和结尾。