반응형
다음 코드를 사용하고 있습니다.
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)
matches = pattern.finditer(mailbody)
findall = pattern.findall(mailbody)
그러나 finditer와 findall은 다른 것을 찾고 있습니다. Findall은 실제로 주어진 문자열에서 모든 일치 항목을 찾습니다. 그러나 finditer는 첫 번째 요소 만 찾아서 하나의 요소 만있는 반복자를 반환합니다.
finditer와 findall이 같은 방식으로 작동하도록하려면 어떻게해야합니까?
감사
해결 방법
여기에서는 재현 할 수 없습니다. Python 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')
findall
에서 얻은 것과 동일한 finditer
의 출력을 원하면 다음이 필요합니다.
for match in pattern.finditer(mailbody):
print(tuple(match.groups()))
참조 페이지 https://stackoverflow.com/questions/3765024
반응형
'파이썬' 카테고리의 다른 글
파이썬 Titlecasing a string with exceptions (0) | 2020.11.03 |
---|---|
파이썬 A non-blocking read on a subprocess.PIPE in Python (0) | 2020.11.03 |
파이썬 Selecting columns with condition on Pandas DataFrame (0) | 2020.11.03 |
파이썬 'double_scalars에서 잘못된 값이 발견되었습니다'경고, 아마도 numpy (0) | 2020.11.03 |
파이썬 What is the difference between 'SAME' and 'VALID' padding in tf.nn.max_pool of tensorflow? (0) | 2020.11.03 |
댓글