2011-12-09 17 views
0
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

を助けることができるかもしれませあなたには、いくつかの詳細を共有することができ、あなたは何をと期待していますここに出力.. – avasal

+0

出力[犬がいる] –

答えて

1

Q>あなたが引用の内部myanimalていたように私の動物の文字列が

を取らされていません(「(持っている。*?)myanimal」)それは文字列の一部としてみなされるであろう、それは実際の値ではないだろうです置換される。

正規表現を形成する必要がある、と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 

が、これは....

+0

それを修正する方法は? –

+1

答えを更新しました..見てください – avasal

1
>>> 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' 
関連する問題