파이썬 문자열에서 특정 단어를 삭제하고 싶습니다.

조회수 7382회

list = [(10)안녕하세요,

오늘은 날씨가(추워43423)

(apple)매우 춥네요(cold)]

이런식으로 문자열 리스트가 있는데요. 여기서 괄호 포함해서 안에 든 모든 문자열을 삭제하고 싶습니다.

re 모듈써서 아래 코드처럼 작성해봤는데요.

import re

a_list = ['(10)안녕하세요', '오늘은 날씨가(추워43423)', '(apple)매우 춥네요(cold)']

p = re.compile('(.)')

for i in range(len(a_list)):
    real_text = re.sub(p, "", a_list[i])
    a_list[i] = real_text

print(a_list)

저는 결과물이 ['안녕하세요', '오늘은 날씨가', '매우 춥네요']를 예상했는데요.

결과물은 ["", "", ""]입니다.

제가 생각한대로 나오게 할려면 어떻게 해야 될까요?

  • 혼자 이것저것 해보다가 p = re.compile('\(.*\)') 이렇게 바꿨더니 '안녕하세요', '오늘은 날씨가' 까지는 잘 나오는데 '매우 춥네요'가 공백으로 바뀌네요 ㅜㅜ 임현준 2017.12.8 12:45

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    LAZY QUANTIFIER(*?)를 이용해보세요

    import re
    
    a_list = ['(10)안녕하세요', '오늘은 날씨가(추워43423)', '(apple)매우 춥네요(cold)']
    
    p = re.compile('\(.*?\)')
    
    for i in range(len(a_list)):
        real_text = re.sub(p, "", a_list[i])
        a_list[i] = real_text
    
    print(a_list)
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 감사합니다. 저런게 있는줄 몰라서 혼자 삽질하고 있었는데 덕분에 한방에 해결했네요 임현준 2017.12.8 17:04
    • 정규표현식을 테스트해보는데에는 https://regex101.com/ 를 이용해보세요. capture되는 부분을 바로 보여줘서, 저는 패턴을 만들때 자주 사용합니다. 알 수 없는 사용자 2017.12.8 17:08

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

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

(ಠ_ಠ)
(ಠ‿ಠ)