2017-05-12 7 views
1

파이썬에서이 간단한 텍스트 수정을 수행하는 깨끗한 방법은 무엇입니까? 마지막 스톱을 제외하고 모든 스톱에 공백이 오는 지 확인하십시오. 공백이 뒤 따르지 않는 점이 입력 문자열에서 얻을 수있는 유일한 오류라고 가정합니다.풀 스톱 후에 공간 추가

나는이 일을하고있다 :

def textFix(text): 
    result = re.sub('\.(?!\s)', '. ', text) 
    if (result[len(result) - 1]) == ' ': 
     return result[:-1] 
    return result 

답변

2

당신은 regex demo를 참조

\.(?!\s|$) 

함께 확인 할 수 있습니다. 공백이나 문자열의 끝, 즉 공백이없는 마지막이 아닌 점과 일치하지 않는 점과 일치합니다. 당신은 또한 어떤 점에 맞게

\.(?=\S) 

을 고려할 수 있습니다

또는는 공백이 아닌 문자로 따라 갔다.

another demo을 참조하십시오.

Python demo

:

import re 
rx = r"\.(?=\S)" 
s = "Text1. Text2.Text3." 
result = re.sub(rx, ". ", s) 
print(result) 
# => "Text1. Text2. Text3." 
+0

BTW 상기은 '\. (? = \ S)'바람직하다. –

+0

와우,'\. (? = \ S)'가 더 빠릅니다! 공유 해줘서 고마워. :) – degant

1

귀하의 기술은 완벽하게 보인다. 뿐만 아니라 마지막 점 이후에 공간을 추가 피하기 위해 수표를 포함 (.)

.가 일치하지 않습니다 다음 문자열 $의 말 다음에 그래서 더 공간이 뒤에 추가되지 않은 경우 (?!$)가 있는지 확인하는 데 도움이
\.(?!\s)(?!$) 

. 이 룩어 존재없이 교대로 인해 빠르게 작동 이후

Regex 101 demo