파이썬 findall() 메서드

박은정·2021년 7월 24일
1

findall() 메서드

패턴을 모두 찾아 리스트로 반환한다
search문이나 match문은 제대로 찾았는지 확인하는 절차가 따로 필요하지만
findall() 메서드로 찾으면 결과값이 빈 리스트로 []로 나온다

findall() 메서드 활용예제 1

주민등록번호 앞 여섯 자리만 추출하는 패턴 적용
\d{6} 패턴 : 숫자를 여섯 번 반복한 값을 의미한다

>>> number = 'My number is 511223-1****** and yours is 521012-2******'
>>> re.findall('\d{6}', number)
['511223', '521012'] # 결과값 정상적으로 출력됨

문자열 규칙에 r을 붙이는 이유

정규표현식에서 문자열을 사용할 때는 앞에 r을 붙이는 것이 좋다
만약 문자열에 \ 문자가 있다면 파이썬은 그 다음에 나오는 문자를 그대로 인식하지 않고 컴퓨터에 명령하기 위한 명령어로 인식한다
이스케이프문자 : 위와 같이 컴퓨터에서 명령을 내리기 위해 \와 함께 사용하는 문자

문자 \ 사용방법

이스케이프 문자를 사용하고 싶지 않고 \ 자체로 사용하고 싶은 경우

  • \\로 입력
  • 문자열 앞에 r을 입력 : r을 입력하면 그 뒤에 나오는 문자열에 들어 있는 문자를 모두 일반 문자 raw string 로 인식한다

findall() 메서드 활용예제 2

'ly'로 끝나는 단어만 추출하는 연습

>>> sentence = 'I love a lovely dog, really. I am not telling a lie.'

이 문장에서 'ly'로 끝나는 문자만 리스트로 반환하고 싶다
문자나 숫자를 반복하고 마지막에 'ly'로 끝나는 패턴을 찾으라 명령

공백이 아닌 문자나 숫자 : \w
숫자와 상관없이 반복하는 문자 : +
그리고 마지막으로 'ly'으로 끝나야 하니 ly를 입력하면 된다

'\w+ly' 패턴을 찾으면 된다

# r'\w+ly'는 문자나 숫자(\w)가 몇 번이라도 나와도 좋으니
# 반복하고 (+), ly로 끝나는 패턴을 의미한다
>>> re.findall(r'\w+ly', sentence)

# lovely, reallyr가 리스트로 반환되었다 (리턴)
['lovely', 'really']

profile
새로운 것을 도전하고 노력한다

0개의 댓글