मैं इसे यहां पुन: पेश नहीं कर सकता। पाइथन 2.7 और 3.1 दोनों के साथ कोशिश की है।
finditer
और findall
के बीच एक अंतर यह है कि पूर्व रिटर्न रेगेक्स मैच ऑब्जेक्ट्स जबकि अन्य मिलान किए गए कैप्चरिंग समूहों का एक टुपल लौटाता है (या यदि कोई कैप्चरिंग समूह नहीं है तो पूरा मिलान)।
तो
import re
CARRIS_REGEX=r'<th>(\d+)</th><th>([\s\w\.\-]+)</th><th>(\d+:\d+)</th><th>(\d+m)</th>'
pattern = re.compile(CARRIS_REGEX, re.UNICODE)
mailbody = open("test.txt").read()
for match in pattern.finditer(mailbody):
print(match)
print()
for match in pattern.findall(mailbody):
print(match)
प्रिंट
<_sre.SRE_Match object at 0x00A63758>
<_sre.SRE_Match object at 0x00A63F98>
<_sre.SRE_Match object at 0x00A63758>
<_sre.SRE_Match object at 0x00A63F98>
<_sre.SRE_Match object at 0x00A63758>
<_sre.SRE_Match object at 0x00A63F98>
<_sre.SRE_Match object at 0x00A63758>
<_sre.SRE_Match object at 0x00A63F98>
('790', 'PR. REAL', '21:06', '04m')
('758', 'PORTAS BENFICA', '21:10', '09m')
('790', 'PR. REAL', '21:14', '13m')
('758', 'PORTAS BENFICA', '21:21', '19m')
('790', 'PR. REAL', '21:29', '28m')
('758', 'PORTAS BENFICA', '21:38', '36m')
('758', 'SETE RIOS', '21:49', '47m')
('758', 'SETE RIOS', '22:09', '68m')
आप finditer
से एक ही आउटपुट चाहते हैं के रूप में आप findall
से हो रही है, तो आप
for match in pattern.finditer(mailbody):
print(tuple(match.groups()))
स्रोत
2010-09-22 06:28:46
आप इटरेटर का उपयोग कैसे कर रहे हैं, या यह निर्धारित कर रहे हैं कि यह कितने परिणाम लौटाएगा? – geoffspear
मैचों में मैच के लिए और उन्हें प्रिंट करने का उपयोग कर। धन्यवाद। – simao
क्या आप एक मेल बॉडी पोस्ट कर सकते हैं जिसके साथ आपको यह समस्या है? – kindall