как дать два значения для строки - PullRequest
0 голосов
/ 09 декабря 2011
import re
mysentence = 'have a dog a cute cat and a big cow '
myanimal = 'dog', 'cat' , 'cow'
print re.finditer('have(.*?)myanimal',mysentence)

это не работает, так как мои строки животных не взяты. Любая идея, чтобы заставить это работать?

Ответы [ 2 ]

1 голос
/ 09 декабря 2011
>>> import re
>>> mysentence = 'have a dog a cute cat and a big cow '
>>> myanimal = 'dog', 'cat' , 'cow'
>>> m = re.match(r'have a (?:%s)' % '|'.join(map(re.escape, myanimal)), mysentence)
>>> m.group()
'have a dog'
1 голос
/ 09 декабря 2011

Q> строки моего животного не взяты

Поскольку у вас есть myanimal внутри кавычек ('have (. *?) Myanimal'), это будет считаться частью строки, это фактические значенияt быть подставленным.

Необходимо сформировать регулярное выражение, и поскольку myanimal - это список:

for animal in myanimal:
    regex = re.compile('have a .*%s'%animal)
    for m in re.finditer(regex, mysentence):
        print m.group()

output:
have a dog
have a dog a cute cat
have a dog a cute cat and a big cow

Может быть, это могло бы помочь ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...