오늘은 특별한 library 없이 해당 문서에서 특정 단어를 찾아내는 방법을 알아보고자 합니다. 가장 기본은 in을 통해서 쓰는 겁니다. 아래처럼
"phone" in "this is my phone"
결과는 당연히 True가 나옵니다.
조금 더 긴 문장으로 하고 변수로 지정해본 다음에 테스트하면?
myphone="My phone is 833-745-2155 and my wife's one is 833-222-4901."
"833" in myphone
역시 True로 나오겠죠. 두번이 있으니 833이.
그런데 이것보다 조금 더 자연스럽게 function을 이용해서 찾아주는 방식이 있는데요. 파이썬 기본 라이브러리인 re (Regular expression operation)에서 search를 통해서 찾는 겁니다. 아래처럼 하면 좀 더 간지 있겠죠? ^^ #re.search
import re
number="833"
re.search(number, myphone)
이 검색의 다양한 정보를 알고 싶으면 다음과 같이 변수로 지정해서 span, end, start등을 알아볼 수도 있습니다.
mysearch=re.search(number, myphone)
mysearch.span()
mysearch.end()
mysearch.start()
그런데 re.search의 한계 중 하나는 일치하는 결과 하나만 낸다는 거죠. 여러개가 있을 땐 어떡해야 할까요? 이 경우에 쓰는 함수가 re.findall입니다.
re.findall(number, myphone)
이렇게 하면 결과가 833을 두 번 알려줍니다. 다시 몇 번 833이 나오는지 알고 싶으면
len(findall(number, myphone))
결과가 2가 나오는 걸 알 수 있습니다. 두 번 나온다는 얘기죠.
그럼 한 단계 더 나아가서 2가 정확하게 어떤 위치에 있냐 이걸 알고 싶으면, re.finditer입니다.
for match in re.finditer(number, myphone):
print (match)
이렇게 하면 결과가 아래와 같이 나옵니다. 위치를 정확하게 알려주죠?
텍스트는 기본적으로 in으로 시작해서 re.search, re.findall, re.finditer를 사용한다는 건 잊지 마시고 다음엔 특정 문자나 숫자가 아니라 특정 포맷이 나오는 경우를 보도록 하겠습니다.