Удалить все пробелы в строке в Python

Я хочу, чтобы устранить все пробелы из строки, на обоих концах, и между словами.

У меня есть этот код:

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

но это исключает только пробелы по обе стороны строки. Как удалить все пробелы?

9 ответов


если вы хотите удалить начальные и конечные пробелы, используйте str.strip():

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

если вы хотите удалить все пробелы, используйте str.replace():

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 удалить пробелы из конца строки.


альтернативой является использование регулярных выражений и match эти странные символы белого пространства тоже. Вот несколько примеров:

удалить все пробелы в строке, даже между словами:

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. Такой элегантный и шутка строковая функция, которую мы можем использовать, это перевести:

' 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 уже указал на метод "translate" выше. И эта вариация работает с Python 3 (см. это Q & A).


import re    
sentence = ' hello  apple'
re.sub(' ','',sentence) #helloworld (remove all spaces)
re.sub('  ',' ',sentence) #hello world (remove double spaces)

осторожно:

strip выполняет rstrip и lstrip (удаляет начальные и конечные пробелы, вкладки, возвраты и каналы форм, но не удаляет их в середине строки).

Если вы заменяете только пробелы и вкладки, вы можете получить скрытые CRLFs, которые, по-видимому, соответствуют тому, что вы ищете, но не совпадают.


кроме того, прокладки имеет некоторые вариации:

удалить пробелы в начале и конце строки:

sentence= sentence.strip()

удалить пробелы в начале строки:

sentence = sentence.lstrip()

удалить пробелы в конце строки:

sentence= sentence.rstrip()

все три строковые функции strip lstrip и rstrip может принимать параметры строки для полосы, по умолчанию все белые пространство. Это может быть полезно, когда вы работаете с чем-то конкретным, например, вы можете удалить только пробелы, но не новые строки:

" 1. Step 1\n".strip(" ")

или вы можете удалить дополнительные запятые при чтении в списке строк:

"1,2,3,".strip(",")