Python/PYTHON Natural Language Processing

[Python] text 검색 기본 function#2

시키테이 2020. 9. 11. 07:14
반응형

저번에 이어 이번에는 특정 포맷을 검색하는 법을 알아보고자 합니다. 예를 들어  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)
반응형