본문 바로가기

[직장인이 알아두면 좋은 파이썬] 정규표현식을 사용해서 금액(1000원) 중 숫자만 뽑아내기

ironwhale 2022. 10. 3.

만약 직장에서 보고서나 문서에 나온 금액 찾아야 하는 일이 생긴다면 어떻게 해야 될까요?? 처음부터 끝까지 읽어보면서 찾거나 '원'이라는 글자를 검색하면서 찾을 수도 있습니다. 이런 노가다 작업은 정규표현식 전방탐색을 사용하면 쉽게 해결할 수 있습니다. 

철수는 1000원을 가지고 있고 영희는 2000원을 가지고 있습니다. 두 사람은 3000원으로 원숭이 인형을 2개 샀습니다. 

위에 예문에서 금액만 뽑아 내기 위해서는 어떻게 해야 될까요?? 긍정형 전방탐색을 사용하면 됩니다. 


긍정형 전방탐색

긍정형 전방탐색이란 어떠한 기준 앞에 해당 패턴이 일치하면 리턴하는 방법입니다. 그래서 원을 기준으로 정하기 위해

(?=원) 이라고 하면  원 앞에 있는 패턴만을 추출할수 있습니다. 금액을 추출하기 위해서 \d+을 사용해 숫자를 찾는 패턴을 사용합니다. 

 

다른 식으로 설명하면 1000원이라는 것을 추출하기위한 패턴은 \d+원 입니다. 근데 여기서 원이라는 글자를 빼고 추출하고자 할때 사용합니다. (?=원)으로 하면 원은 리턴되지 않습니다. 

 

따라서, 긍정형 전방탐색을 이해할때는 그냥 내가 추출하고자 하는 패턴이 있는데 그중 맨 마지막 패턴을 리턴하고 싶지 않을때 사용한다고 생각하시면 됩니다. 

전체코드 

import re


print("="*100)

s = """
    철수는 1000원을 가지고 있고 영희는 2000원을 가지고 있습니다. 두 사람은 3000원으로 원숭이 인형을 2개 샀습니다. 
"""
p = re.compile("\d+(?=원)")
m = p.findall(s)
print(m)
print("="*100)

 

결과

['1000', '2000', '3000']

 


 

댓글