파이썬 정규표현식에서 \ 처리가 궁금합니다.

조회수 637회
import re
b = '야호\'
a = re.compile('\\')

print(re.sub(a, '@', b)

제가 예상한건 야호@ 인데 일단 컴파일 오류가 나타나네요 제가 예상한대로 할려면 re.compile('\\') 이렇게 해야 된느데 왜 \를 3개를 써야 되는 건가요?

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    안녕하세요

    import re
    
    b = '야호\\'
    a = re.compile('\\\\')
    
    print(re.sub(a, '@', b))
    
    

    이렇게 하면되는데요 이게.. 검색해보니 스트링 파서가 백스래시 두개를 제거해버린다고 하네요.. 그래서 그냥 슬래시 하나로 인식하기위해 하나를 추가하고 + 파서에서 제거될 2개를 추가해서 4개가 되었네요 ;;

    import re
    
    b = '야호\\'
    a = re.compile(r'\\')
    
    print(re.sub(a, '@', b))
    

    아니면 원본(raw) 스트링을 표현하는 r 를 앞에 붙이면 파서에서 건들지 않고 넘어가기 때문에 원하는 내용을 얻을수 있습니다 야호!

    • 감사합니다. 파이썬 문자열 자체에서 \\를 \로 인식해서 그렇다고 생각하면 될까요? 임현준 2019.1.25 18:36
    • 네 :) 최진우 2019.1.26 21:59

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

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

(ಠ_ಠ)
(ಠ‿ಠ)