2017-11-12 11 views
-1

私は正規表現を印刷するために、finditerを使用しています。 2枚目の印刷で何もしません。2回呼び出されたときにfinditer()の結果が空になるのはなぜですか?

import re 

regex = r"[a-zA-Z]+ \d+" 
matches = re.finditer(regex, "June 24, August 9, Dec 12") 

print(type(matches)) 
print(matches) 

print("-------") 
for match in matches: # prints results 
    print(match) 

print("-------")  
for match in matches: # prints no results 
    print(match) 

print("-------") 
matches = re.finditer(regex, "June 24, August 9, Dec 12") 
for match in matches: 
    print(match.group()) 

2枚目の印刷で何も印刷されません。

+3

画像を投稿しないでください。テキストを書き込む。あなたのコードを投稿してください。あなたの問題またはあなたの質問を説明する文全体を定式化する。問題のある人があなたの質問を見つけて、その解決方法を見て、それについて幸せになれるようにするために、ニースの検索可能なタイトルを作成します。 –

+0

私はコードを書こうとしましたが、成功しなかったので、理解できなかったエラーがありました。私はregex関数 'finditer(patr、string、flags)'を使用しています。問題は、返されたオブジェクトを最初にたどり着くたびに、結果が期待どおりに再試行されるということです。そのちょうどヌルでもないタイプなし – overflow

+0

あなたの質問にあなたの質問にあなたのpythonコード(関連部分)をコピーする(各行を4つのスペースでインデントし、コードフローに必要なpythonインデント)。さらに良い点は、エラーを生成するデータを含む最小限の例です –

答えて

0

matches = list(re.finditer(regex, .....)を試してください。これは反復された結果グループを複数回使用できるリストに格納します。

簡体:すべての結果の後にイテレータを入れて foreachイテレータには反復されます。それを使用すると、データの背後にあるので何も印刷されません。それは(受け入れられない、しかし)から盗まれ、ここで答えるために

対策:Different behavior between re.finditer and re.findall

import re 

regex = r"[a-zA-Z]+ \d+" 
matches = list(re.finditer(regex, "June 24, August 9, Dec 12")) # this will store the iteration into a list 

print(type(matches)) 
print(matches) 

print("-------") 
for match in matches: 
    print(match) 

print("-------")  
for match in matches: 
    print(match) 
関連する問題