녕녀기의 실험일지

[ Pandas ] .str.extract와 정규 표현식을 사용해서 조건에 맞는 텍스트 추출하기 본문

-- Data --/- Python -

[ Pandas ] .str.extract와 정규 표현식을 사용해서 조건에 맞는 텍스트 추출하기

녕녀기 2023. 9. 3. 02:40

본문으로

안녕하세요. 녀기입니다.

 

ㅎㅎ

 

이 늦은 시간에 포스팅이라니...

 

그것도 주말입니다..

어쩌다 보니 python 코드를 작성하게 됐고,

 

모르던 것을 알게 돼서 바로 기록으로 남겨야 하기에 

 

이렇게 포스팅을 하게 됩니다..

 

(인생이란...야근의 연속?ㅋㅋㅋ)

 

으아...!!!

 

바로 가 보시죠🏋️‍♀️


str.extract()

id A
0 [헤헤]
1 [지금 시간은] 새벽 2시
2 잘 수가 없는 데이터린이[는 지금도]
3 [포]스팅 중

위와 같은 테이블 혹은 데이터 프레임이 있다고 합시다.

 

제가 하고 싶었던 것은 [ ](대괄호) 사이에 포함돼 있는 글자를 추출하고 싶었습니다.

 

첫 번째 컬럼에서는 '헤헤'

 

두 번째 컬럼에서는 '지금 시간은'

 

세 번째 컬럼에서는 '는 지금도'

 

네 번째 컬럼에서는 '포'라는 글자만 추출하는 것이죠.

 

보통 텍스트에서 규칙을 찾아야 할 때는 정규 표현식을 사용합니다.

 

pandas 데이터 프레임에서 규칙에 찾는 텍스트를 찾아 추출하는 것이 바로

 

.str.extract() 입니다.

 

아래와 같이 대괄호 안에 포함된 글자를 찾을 수 있습니다.

df["A"].str.extract(r'\[(.*?)\]')

사용된 정규 표현식을 하나하나 살펴 보면

  • \[와 \]: [와 ]는 정규 표현식에서 특별한 의미를 가지는 메타문자입니다. 이를 문자 그대로 매칭하려면 역슬래시(\)를 사용하여 이스케이프합니다.
  • (.*?): 이 부분은 실제로 추출하려는 부분입니다.
    • .: 어떤 문자 하나와 일치합니다.
    • *: 앞에 나오는 문자나 패턴이 0번 이상 반복됨을 나타냅니다. 따라서 .*는 어떤 문자나 문자열이든 0번 이상 반복될 수 있음을 의미합니다.
    • ?: 앞에 나오는 패턴이 최소로 일치하도록 합니다. 즉, 가능한 가장 짧은 문자열과 매치됩니다.
      따라서 r'\[(.*?)\]'는 [와 ] 사이에 있는 문자열을 최소한의 길이로 추출하게 됩니다. 예를 들어, [example]에서 example을 추출하고 [a]에서 a를 추출합니다.

 

만약 괄호까지 포함해서 출력하고 싶다면

 

아래와 같이 소괄호 안에 역슬래시 대괄호를 써 주면 됩니다.

df["A"].str.extract(r"(\[.*?\])")

특정한 텍스트를 찾을 때 정규 표현식을 써서 찾는 버릇을 들여야 하는데

 

이 놈의 정규 표현식은 해도 해도 모르겠단 말이죠...

 

(진짜 너무 어려워요ㅠㅠ)

그래도 어쩌겠습니까? 내가 선택한 길인걸....

 

(내가 가는 이 길이 어디로 가는지~♬)

 

저는 이제 다시 자러 가 볼게요.

 

주말에는 쉬어야지...

 

여러분들도 주말 푹 쉬세요~~

 

뿅입니다.

 

Comments