Ich kann das hier nicht wiedergeben. Habe es mit Python 2.7 und 3.1 versucht.
Ein Unterschied zwischen finditer
und findall
ist, dass erstere kehrt Regex Objekte, während die anderen kehrt ein Tupel der angepaßten einfangenden Gruppen (oder das gesamte Spiel, wenn es keine einfangenden Gruppen sind).
So
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)
druckt
<_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')
Wenn Sie die gleiche Ausgabe von finditer
wollen, wie Sie von findall
bekommen, müssen Sie
for match in pattern.finditer(mailbody):
print(tuple(match.groups()))
Wie verwenden Sie den Iterator oder bestimmen, wie viele Ergebnisse zurückgegeben werden? – geoffspear
mit a für Übereinstimmung in Übereinstimmungen und Drucken von ihnen. Vielen Dank. – simao
Können Sie einen Nachrichtentext posten, mit dem dieses Problem besteht? – kindall