2012-08-31 3 views

답변

1

하나의 백 슬래시 각각이지만, 문자열의 repr을 인쇄 할 때, 그들은 (탈출) 중복 - 정규식을 구축 할 문자열을 사용할 때 당신이 그들을 복제 할 필요가하는 것처럼. 그래서 모든 것이 좋습니다. 예를 들어

: 백 슬래시가 중복되지

>>> len("\\") 
1 
>>> len("\\n") 
2 
>>> len("\n") 
1 
>>> print "\\n" 
\n 
>>> print "\n" 


>>> 
+0

아, 고마워! 또 다른 짧은 질문 : 're.escape'이 공백을 벗어나지 말라고 말하는 방법이 있습니까? –

+0

@ JohnSmith : 아니요, 're.escape()'[단순히 영숫자 이외의 문자 앞에 백 슬래시를 묻습니다] (http://docs.python.org/library/re.html#re.escape). 조금 지나친 공격이지만 상처를 입지 않아야합니다. 사실, regex를 컴파일 할 때're.VERBOSE'를 사용하면 공백을 이스케이프해야합니다. –

+0

귀하의 경우, 그것은 상처를 입히지 만, 당신은 쉽게 주위의 작업을 전환 할 수 해결할 수 있습니다 : 첫 번째 분할, 다음 탈출 :'key = [re.escape (item) for key.split()]''. –

0

.

for element in key: 
    print element 

그리고이 출력이 표시됩니다 : 이것을 실현하기 위해 수행하려고

는 전체 목록은 그대로 문자열이 아닌 인쇄 파이썬 사용되는 표현을 인쇄 한
\#one\ 
\#two\ 
\#some\ 
\#tests\ 
\#are\ 
\#done 

하지만, 그들은 파이썬 표현식으로 인쇄됩니다. (따옴표 ""가 문자열에 없습니다)

실제로 백 슬래시가 포함 된 문자열을 인코딩하려면 해당 백 슬래시를 복제해야합니다. 그게 다야.

1

\ 문자는 이스케이프 문자로 다음 문자 [s]의 의미를 변경하는 문자입니다. 예를 들어 "n"문자는 단순히 "n"입니다. 하지만 "\ n"처럼 이스케이프하면 "개행"문자가됩니다. 따라서 \ literal을 사용해야하는 경우에는 \\

0

문자열을 목록으로 변환 할 때 (예 : 인쇄하려면) 포함 된 각 객체에 대해 repr을 호출해야합니다 목록에. 그래서 두 번째 출력에서 ​​따옴표와 백 슬래시를 얻습니다. 이 시도 :

s = "\\a string with an escaped backslash" 
print s  # prints: \a string with an escaped backslash 
print repr(s) # prints: '\\a string with an escaped backslash' 

repr 호출은 문자열 주위에 따옴표를두고, 그리고 백 슬래시 탈출이다.