문자열, 양쪽 끝 및 단어 사이의 모든 공백을 제거하고 싶습니다.
이 파이썬 코드가 있습니다 :
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가 생길 수 있습니다.