[python] 문자열에서 모든 공백을 제거하십시오.

문자열, 양쪽 끝 및 단어 사이의 모든 공백을 제거하고 싶습니다.

이 파이썬 코드가 있습니다 :

def my_handle(self):
    sentence = ' hello  apple  '
    sentence.strip()

그러나 문자열의 양쪽에서 공백 만 제거합니다. 공백을 모두 제거하려면 어떻게합니까?



답변

선행 및 끝 공백을 제거하려면 str.strip()다음을 사용하십시오 .

sentence = ' hello  apple'
sentence.strip()
>>> 'hello  apple'

모든 공백 문자를 제거하려면 str.replace()다음을 사용하십시오 .

(NB는 “일반”ASCII 공백 문자 만 제거하고 다른 공백 은 제거 ' ' U+0020하지 않습니다 )

sentence = ' hello  apple'
sentence.replace(" ", "")
>>> 'helloapple'

중복 된 공백을 제거하려면 str.split()다음을 사용하십시오 .

sentence = ' hello  apple'
" ".join(sentence.split())
>>> 'hello apple'


답변

공백 만 제거하려면 다음을 사용하십시오 str.replace.

sentence = sentence.replace(' ', '')

모든 공백 문자 (공백, 탭, 줄 바꿈 등) 를 제거하려면 split다음 을 사용할 수 있습니다 join.

sentence = ''.join(sentence.split())

또는 정규식 :

import re
pattern = re.compile(r'\s+')
sentence = re.sub(pattern, '', sentence)

시작과 끝에서 공백 만 제거하려면 다음을 사용할 수 있습니다 strip.

sentence = sentence.strip()

lstrip문자열의 시작 부분에서만 공백을 제거하고 문자열 rstrip의 끝에서 공백을 제거 하는 데 사용할 수도 있습니다 .


답변

대안은 정규식을 사용 하고이 이상한 공백 문자 도 일치 시키는 것 입니다. 여기 몇 가지 예가 있어요.

단어 사이에서도 문자열의 모든 공백을 제거하십시오.

import re
sentence = re.sub(r"\s+", "", sentence, flags=re.UNICODE)

문자열의 시작에서 공백을 제거하십시오.

import re
sentence = re.sub(r"^\s+", "", sentence, flags=re.UNICODE)

문자열의 끝에서 공백을 제거하십시오.

import re
sentence = re.sub(r"\s+$", "", sentence, flags=re.UNICODE)

문자열의 시작과 끝에서 공백을 제거하십시오.

import re
sentence = re.sub("^\s+|\s+$", "", sentence, flags=re.UNICODE)

중복 공간 만 제거하십시오.

import re
sentence = " ".join(re.split("\s+", sentence, flags=re.UNICODE))

(모든 예제는 Python 2와 Python 3 모두에서 작동합니다)


답변

공백은 공백, 탭 및 CRLF를 포함 합니다. 우리가 사용할 수 있는 우아하고 1 줄짜리 문자열 함수는str.translate 다음과 같습니다.

파이썬 3

' hello  apple'..translate(str.maketrans('', '', ' \n\t\r'))

또는 철저히 원한다면 :

import string
' hello  apple'..translate(str.maketrans('', '', string.whitespace))

파이썬 2

' hello  apple'.translate(None, ' \n\t\r')

또는 철저히 원한다면 :

import string
' hello  apple'.translate(None, string.whitespace)


답변

시작과 끝에서 공백을 제거하려면을 사용하십시오 strip.

>> "  foo bar   ".strip()
"foo bar"


답변

' hello  \n\tapple'.translate({ord(c):None for c in ' \n\t\r'})

MaK는 이미 위의 “번역”방법을 지적했습니다. 그리고이 변형은 Python 3에서 작동합니다 ( 이 Q & A 참조 ).


답변

조심해:

strip rstrip 및 lstrip을 수행합니다 (앞뒤 공백, 탭, 리턴 및 양식 피드를 제거하지만 문자열 중간에서 제거하지는 않습니다).

공백과 탭만 바꾸면 찾고자하는 것과 일치하지만 보이지 않는 숨겨진 CRLF가 생길 수 있습니다.