我想知道如何在一个字符串中找到一个你不知道是什么的字符串。我正在写一个IRC机器人,我需要这个功能。我希望能够写下:
!问候格雷格
然后我的机器人应该说“嗨,格雷格!”。所以问候之后会发生变化。如果我写了!问马修,它会说“嗨,马修!”。 这可能吗?
非常感谢。
Andesay
答案 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”)
关键是字符串采用运算符