2013-05-03 2 views
3

파이썬 3.x에서 특수 재 배열 '\ s'는 [\ t \ n \ r \ f \ v]를 포함한 유니 코드 공백 문자와 일치합니다.정규식을 사용하여 탭과 개행 문자를 제거하는 방법

다음 코드는 탭과 개행 문자를 공백으로 대체하기위한 것입니다.

import re 
text = """Hello my friends. 
    How are you doing? 
I'm fine.""" 
output = re.sub('\s', ' ', text) 
print(output) 

그러나 탭은 여전히 ​​출력에 있습니다. 왜?

+3

"탭"은 공백이 아닌 것입니까? 대부분의 IDE는 모든 탭을 4 개의 공백으로 대체합니다. 탭에'\ t'을 쓰면 작동 할 것입니다. – Volatility

+0

...하지만 내 질문의 요점은 '\ s'가 '', '\ n'및 '\ t'를 포함한다고 가정합니다. –

+3

예,하지만 공백 문자를 공백으로 대체합니다. 공백 그룹은 공백 그룹으로 유지됩니다. 공백 문자 그룹을 하나의 공백 문자로 대체하려면'r '\ s +''을 사용하십시오. – Volatility

답변

9

문제는 (아마도) 탭 문자가 공백을 많이 차지한다는 것입니다.

>>> re.sub(r"\s+", " ", text) 
"Hello my friends. How are you doing? I'm fine." 
+2

나를 이길 :) +1 – HennyH

+0

그것은 실제로 내 질문에 있지만, 그것은 내 원래 코드에 없습니다. 어떻게 SO 질문에 탭을 입력 할 수 있습니까? –

+0

@ user1975053 "\ t"로 탭을 표현하는 것 외에는 할 수 있다고 생각하지 않습니다. 그래서 당신이 할 수있는 최선의 질문은 당신의 문자열을 "Hello my friends."로 바꾸는 것입니다. \ n \ t 안녕하세요? \ n 괜찮습니다. " –

관련 문제