반응형
저번에 이어 이번에는 특정 포맷을 검색하는 법을 알아보고자 합니다. 예를 들어 xxx-xxx-xxxx형태의 전화번호가 몇 번이나 나오는지 알고 싶다고 하면, 우선 포맷을 정의해줘야 합니다. 우선 패턴 타입을 지정해줘야 하는데 숫자는 /d를 통해서 표현해줍니다. 그런데 패턴을 적을 때는 반드시 r을 앞에다 붙여주는 거 잊지 마세요!
myphone="My phone is 833-745-2155 and my wife's one is 833-222-4901."
re.search(r'/d/d/d-/d/d/d-/d/d/d/d', myphone)
그러면 첫번째 결과를 찾아줍니다. 그런데 매번 r + /d 이 조합을 여러번 적는 건 귀찮기 때문에 아래처럼 해줘도 됩니다.
re.search(r'\d{3}-\d{3}-\d{4}', myphone)
숫자는 \d로 찾지만 다른 문자의 경우는 다음과 같은 문자를 이용합니다.
\d: 숫자
\w: 숫자랑 문자
\s: 빈칸
\D: 숫자 아닌 모든 것
\W: 숫자와 문자 아닌 모든 것 (특수문자)
\S: 빈칸 아닌 모든 것
그래서 위의 경우를 아래처럼 적어도 똑같은 결과가 나올 겁니다.
re.search(r'\w{3}-\w{3}-\w{4}', myphone)
앞 포스팅처럼 이런 패턴을 다 찾아라, 그리고 이 패턴이 몇 번 나오느냐를 알고 싶으면, re.findall, re.finditer를 사용하면 됩니다.
pattern=r'\w{3}-\w{3}-\w{4}'
re.findall(pattern, myphone)
len(re.findall(pattern, myphone))
for number in re.finditer(pattern, myphone):
print(number)
반응형
'Python > PYTHON Natural Language Processing' 카테고리의 다른 글
[Python] text 편집 완전 기본 (0) | 2020.09.18 |
---|---|
[Python] text 검색 기본 function#3: group, ., + (0) | 2020.09.14 |