gerçekten finditer
sonuçların bir liste oluşturmak istiyorsanız, o zaman bir liste anlama kullanabilirsiniz Bunu burada üretemiyorum. Hem Python 2.7 ve 3.1 ile denediniz. finditer
ve findall
arasında
bir fark olduğu için diğer verir; oysa önceki döner normal ifade eşleme nesneleri eşleşen yakalama gruba demet (ya da tüm maç bir yakalama gruplar varsa).
Yani
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)
baskılar
<_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')
Eğer findall
alıyoruz gibi finditer
aynı çıktıyı istiyorsanız
, sen
for match in pattern.finditer(mailbody):
print(tuple(match.groups()))
Yineleyiciyi nasıl kullanıyorsunuz veya kaç sonuç döndüğünü belirliyorsunuz? – geoffspear
bir eşleşme eşleşmesi kullanarak ve bunları basarak. Teşekkürler. – simao
Bu sorunla ilgili bir posta gövdesi gönderebilir misiniz? – kindall