정규표현식 특정문자열 제거하기
조회수 2486회
질문1 : (해결)
[퓨어포레] 앨리스 총총크림 50ml
[글로시블라썸] 네일스티커 비비드쉘 1매
[어퓨] 아이 무스 [3호_메이플토스트] 6g
맨앞의 브랜드명을 [ ] 째로 지우고싶습니다
brand = ['퓨어포레', '글로시블라썸', '어퓨']
target.replace("[", "").replace(brand, "").replace("]", "")
이렇게하면 어퓨 같은 경우는 뒤에 [ ] 도 같이 사라지는데 앞에있는 [브랜드명] 만 정규표현식을 사용해서 지울수 있는 방법이 있나요? 꼭 정규표현식이 아니어도 됩니다!
+
print(re.compile('\[[A-za-z가-힣 ]+\]').sub('',target))
1번은 이렇게 하니까 되네요
혹시 이 방법 외에도 더 좋은 방법이 있으면 알려주시면 감사합니다
질문2 :
A
[어퓨] 아이 무스 [4호_진저크림] 6g
[어퓨] 아이 무스 [5호_데일리모카] 6g
B
[어퓨] 아이 무스
[어퓨] 아이 무스
A에서 앞에 일치하는 단어만 남기고 뒷 부분 단어는 지워서 B처럼 만드는 방법이 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
질문 1
브랜드명은 항상 줄 첫 번째에 위치해 있다는 점에 착안하여 만들어 봤습니다.
'[브랜드명] 어쩌고저쩌고'
줄 맨 앞에 있는 []만 제거하는 코드입니다.
import re text = '''[퓨어포레] 앨리스 총총크림 50ml [글로시블라썸] 네일스티커 비비드쉘 1매 [어퓨] 아이 무스 [3호_메이플토스트] 6g''' print(re.sub('^\[\w+\] ', '', text, flags=re.MULTILINE)) # 출력 결과 #앨리스 총총크림 50ml #네일스티커 비비드쉘 1매 #아이 무스 [3호_메이플토스트] 6g
질문 2
문장의 앞에서부터 서로 일치하는 부분을 찾는 코드입니다.
질문자님께서 제시하신 예시에서는
[어퓨] 아이 무스 [
가 되겠네요.difflib
라이브러리를 사용했습니다. (기본 라이브러리)from difflib import SequenceMatcher string1 = "[어퓨] 아이 무스 [4호_진저크림] 6g" string2 = "[어퓨] 아이 무스 [5호_데일리모카] 6g" match = SequenceMatcher(None, string1, string2).find_longest_match(0, len(string1), 0, len(string2)) print(string1[match.a: match.a + match.size]) # "[어퓨] 아이 무스 ["
위 코드는 여기를 참고하여 만든 코드입니다. (사실상 그대로 가져왔습니다..)
도움이 되셨길 바랍니다!
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력