파이썬 dataframe re.sub 질문 올립니다.

조회수 1586회

지금 데이터프레임을 이용한 api 정보 전처리 중에 있습니다. 쓸데 없는 텍스트를 없애기 위해서 아래와 같이 re.sub function을 사용했습니다.

import re
import pandas as pd

regex = "\(.*\)|\s-\s.*"
df = pd.dataframe(recipe)
for i in range(len(df)):
    df['재료'][i] = re.sub(regex,'',df['재료'][i])

이런식으로 재료 열에 데이터 중 괄호와 괄호 안에 있는 값을 없애려고 했는데 괄호부터 그 뒤에 있는 모든 텍스트가 싹다 날아갑니다.

이미지

이게 적용하기 전의 df,

이미지

두번째 사진이 위의 코드를 적용한 후의 df입니다.

고구마죽\n 고구마, 설탕, 찹쌀가루... 처럼 뒷부분을 날리지 않고 괄호와 괄호 안에 있는 문자만 날리고 싶습니다. regex부분에서 문제가 있는거 같은데 봐주실 수 있을까요?

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    현재 정규식 r"\(.*\)"

    • ( 로 시작
    • 모든(any)문자의 연속
    • )로 끝

    이런 의미이고, 모든(any)문자의 연속에서 모든 문자는 ) 도 포함됩니다. 그래서, 질문하신 결과가 나오는 듯 해요.

    )는 아닌 모든 문자의 연속 로 바꾸면 해결됩니다. 이건 정규식에서 r"\([^\)]*\)" 이렇게 표현됩니다. .[^\)] 으로 바꾼 겁니다.

    • 감사합니다 정확히 해결됐습니다 JUNI 2021.11.26 10:27

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)