Python에서 다중 공백을 단일 공백으로 대체
다음과 같은 문자열이 있습니다.
mystring = 'Here is some text I wrote '
이중, 삼중(...) 공백 체커를 단일 공백으로 대체하여 다음을 얻으려면 어떻게 해야 합니다.
mystring = 'Here is some text I wrote'
간단한 가능성(RE를 피하고 싶은 경우)은 다음과 같습니다.
' '.join(mystring.split())
분할과 결합은 명시적으로 요구하는 작업을 수행합니다.또한 이 작업은 사용자가 언급하지 않는 추가 작업도 수행합니다.또한 예에서는 후행 공백을 제거합니다.
정규식을 사용하면 조합된 공백 문자를 보다 효과적으로 제어할 수 있습니다.
유니코드 공백을 일치시키려면:
import re
_RE_COMBINE_WHITESPACE = re.compile(r"\s+")
my_str = _RE_COMBINE_WHITESPACE.sub(" ", my_str).strip()
ASCII 공백만 일치시키려면:
import re
_RE_COMBINE_WHITESPACE = re.compile(r"(?a:\s+)")
_RE_STRIP_WHITESPACE = re.compile(r"(?a:^\s+|\s+$)")
my_str = _RE_COMBINE_WHITESPACE.sub(" ", my_str)
my_str = _RE_STRIP_WHITESPACE.sub("", my_str)
제어 문자(x0b, x0c, x1c, x1d, x1e, x1f 등)를 유지하기 위해서는 ASCII 공백만 일치시키는 것이 필요할 수 있습니다.
레퍼런스:
개요:
Unicode(str) 패턴의 경우: Unicode 공백 문자([\t\n\r\f\v] 및 여러 언어의 타이포그래피 규칙에 의해 필수화된 공백 등)와 일치합니다.ASCII 플래그를 사용하는 경우 [\t\n\r\f\v]만 일치합니다.
개요:
\w, \W, \b, \B, \d, \D, \s 및 \S를 완전한 Unicode 매칭이 아닌 ASCII만의 매칭을 실행하도록 합니다.이는 Unicode 패턴에서만 의미가 있으며 바이트 패턴에서는 무시됩니다.인라인 플래그(?a)에 대응합니다.
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의 스플릿/조인 솔루션은 적어도 같은 속도로(보통 훨씬 더 빠르게) 동작합니다.
이 예에서는 기본값 timit을 사용합니다.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
'source' 카테고리의 다른 글
maria db를 사용한 지리 공간 (0) | 2022.09.12 |
---|---|
Python 3: Unbound Local Error: 할당 전에 참조된 로컬 변수 (0) | 2022.09.12 |
VueX에 여러 Axios 요청을 저장하는 가장 좋은 방법은 무엇입니까? (0) | 2022.09.12 |
sys.stdout의 차이.쓰고 인쇄할 수 있습니까? (0) | 2022.09.12 |
mariadb에 mysql 데이터베이스 Import (0) | 2022.09.12 |