Programing

파이썬에서 여러 공백을 단일 공백으로 대체

lottogame 2020. 3. 28. 10:10
반응형

파이썬에서 여러 공백을 단일 공백으로 대체


이 질문에는 이미 답변이 있습니다.

이 문자열이 있습니다.

mystring = 'Here is  some   text   I      wrote   '

더블, 트리플 (...) 공백을 하나의 공백으로 대체하여 어떻게 얻을 수 있습니까?

mystring = 'Here is some text I wrote'

간단한 가능성 (RE를 피하려는 경우)은

' '.join(mystring.split())

split 및 join은 명시 적으로 요구하는 작업을 수행합니다. 또한 말하지는 않지만 추가 공백을 제거하여 예제에서 볼 수 있습니다. ;-)


import re

re.sub('\s+', ' ', mystring).strip()

이것은 또한 모든 탭, 줄 바꿈 및 기타 "공백과 같은"문자를 대체합니다.

strip()원격 선행과 공백을 후행합니다.


완전성을 위해 다음을 사용할 수도 있습니다.

mystring = mystring.strip()  # the while loop will leave a trailing space, 
                  # so the trailing whitespace must be dealt with
                  # before or after the while loop
while '  ' in mystring:
    mystring = mystring.replace('  ', ' ')

상대적으로 적은 공간 ( re이 상황 보다 빠름)이 있는 문자열에서 빠르게 작동 합니다.

어떤 시나리오에서든 Alex Martelli의 split / join 솔루션 은 최소한 빠르게 수행됩니다 (보통 훨씬 더 많이 수행).

귀하의 예제에서 timeit.Timer.repeat ()의 기본값을 사용하면 다음과 같은 시간이 발생합니다.

str.replace: [1.4317800167340238, 1.4174888149192384, 1.4163512401715934]
re.sub:      [3.741931446594549,  3.8389395858970374, 3.973777672860706]
split/join:  [0.6530919432498195, 0.6252146571700905, 0.6346594329726258]


편집하다:

그냥이 건너 온 이 게시물 이 방법의 속도를 다소 긴 비교를 제공합니다.

참고 URL : https://stackoverflow.com/questions/2077897/substitute-multiple-whitespace-with-single-whitespace-in-python


반응형