Как найти х в строке в Python - PullRequest
       21

Как найти х в строке в Python

2 голосов
/ 12 декабря 2010

Мне было интересно, как найти строку, которую вы не знаете, что в строке. Я пишу бот IRC, и мне нужна эта функция. Я хочу иметь возможность написать:

! Приветствую, Грег

и тогда мой бот должен сказать «Привет, Грег!». То, что приходит после приветствия, является переменным. И если бы я написал! Поприветствуйте Мэтью, он скажет: Возможно ли это?

Большое спасибо.

Andesay

Ответы [ 5 ]

3 голосов
/ 12 декабря 2010

Если вы планируете увеличить сложность своего бота, я бы предложил использовать регулярные выражения, например:

Сначала вы определяете функции, которые могут понадобиться вашему боту.

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 голосов
/ 12 декабря 2010
import re
...
input = '!greet Greg'
m = re.match(r'!greet\s+(.*)', input)
if m:
    print 'Hi, %s!' % m.group(1)
3 голосов
/ 12 декабря 2010
if command.lower().startswith('!greet '):
    put('Hi, ' + command[7:].strip() + '!')

'!greet Greg' -> [ put()s 'Greg' ]
'!Greet  Fred ' -> [ put()s 'Fred' ]
'!hello John' -> [ nothing ]
1 голос
/ 12 декабря 2010

Все просто:

>>> import re
>>> m = re.search(r"!greet (?P<name>.+)", "!greet Someone")
>>> m.group("name")
'Someone'
0 голосов
/ 12 декабря 2010

если "Грег" в приветствии: doSomething ("Привет, Грег")

ключ в том, что строки принимают оператор in

...