2011-09-27 4 views
1

백 슬래시 대신에 정규 표현식을 사용하려고하지만 파이썬이 이중 백 슬래시를 삽입하는 것처럼 보입니다.파이썬 정규 표현식 중에 백 슬래시 삽입

>>> re.sub('a', '\\ b', 'a') 
'\\ b' 

더블 백 슬래시는 백 슬래시 (탈출 + 백 슬래시 = 백 슬래시)로되어 있지만, 그것은 문자 그대로의 것을 끝된다. 나는 이중 슬래시를 제거하면

, 그것은 모든 일을 인쇄하지 않습니다

>>> re.sub('a', '\ b', 'b') 
'b' 

을 그냥 백 슬래시에서 하위에 파이썬을 어떻게합니까?

답변

6

이중 백 슬래시가 삽입되지 않습니다. 이것은 단순히 문자열을 문자열 리터럴로 표시하는 대화 형 인터프리터입니다. 실제 문자열을 볼 수 print를 사용

"\\b" -> \b 
r"\b" -> \b 

사용 R ","단순화하기 위해 원시 문자열 :

>>> "\\n" 
'\\n' 
>>> print "\\n" 
\n 
+0

네, 맞습니다! 불행히도,이 괴상함은 내가 doctest가 임베디드되어 있고, doctest interpreter가 \\ back을 얻었 기 때문에 코의 doctest가 실패하는 원인이되고 있습니다. 통역사가 어리석지 않게하려면 어떻게해야합니까? – cflewis

+0

그렇지 않습니다. doctest에서'print'를 사용하거나'\\ ''를 사용하십시오. doctests의 전체 "지점"은 대화 형 사용과 동일하게 보입니다. 말하기 ... 그 doctest에서 날 문자열을 사용하고 있습니까? 당신은해야한다! – SingleNegationElimination

+0

docstring 자체가 문자열이므로 Doctest로 실행되기 전에 "언 이스케이프"한 단계를 거치게됩니다. –

2

을 나는 이것이 대답 (I 번째 Liquid_Fire), 그러나 제안하지 않습니다 가정 파이썬의 백 슬래시.

+0

그건 내가 이미 썼던 것과 같습니다 ... –

+0

광산을 타이핑하기 시작했을 때 당신의 대답은 여기에 없었습니다. 죄송합니다 ... – c4757p

+1

신경 쓰지 마세요. –

0

문자열에 문자 "r"을 접두사로 붙입니다. 이것은 파이썬이 문자열을 문자 그대로 해석하도록 지시합니다. 코드에 대한

:

re.sub('a', r'\ b', 'a')

당신은 종종 파이썬과 정규 표현식 사용 "R"을 찾을 수 있습니다.