如何在Python中查找字符串中的x

时间:2010-12-12 17:35:01

标签: python irc

我想知道如何在一个字符串中找到一个你不知道是什么的字符串。我正在写一个IRC机器人,我需要这个功能。我希望能够写下:

!问候格雷格

然后我的机器人应该说“嗨,格雷格!”。所以问候之后会发生变化。如果我写了!问马修,它会说“嗨,马修!”。 这可能吗?

非常感谢。

Andesay

5 个答案:

答案 0 :(得分:3)

if command.lower().startswith('!greet '):
    put('Hi, ' + command[7:].strip() + '!')

'!greet Greg' -> [ put()s 'Greg' ]
'!Greet  Fred ' -> [ put()s 'Fred' ]
'!hello John' -> [ nothing ]

答案 1 :(得分:3)

import re
...
input = '!greet Greg'
m = re.match(r'!greet\s+(.*)', input)
if m:
    print 'Hi, %s!' % m.group(1)

答案 2 :(得分:3)

如果您打算为机器人添加更多复杂性,我建议使用这样的正则表达式:

首先,您可以定义机器人可能需要的功能。

def greet_user(name):
    print 'Hello, %s' % name

然后定义模式和命令的字典:

import re
pattern = re.compile(r'!(?P<command>\w+)\s*(?P<args>\w*)')
commands = {'greet': greet_user}

现在您只需使用用户输入和相应的函数调用pattern.match()

m = pattern.match(string)
commands.get(m.group('command'))(m.group('args'))

如果用户输入了无效命令,则抛出TypeError。

现在您只需编辑commands - dict。

即可添加任何功能

答案 3 :(得分:1)

很简单:

>>> import re
>>> m = re.search(r"!greet (?P<name>.+)", "!greet Someone")
>>> m.group("name")
'Someone'

答案 4 :(得分:-1)

如果“格雷格”问候:   doSomething(“Hi Greg”)

关键是字符串采用运算符