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


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

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

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

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

9 540

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)

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

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)

пробел включает в себя пробелов, табуляции и переводы строк. Так элегантный и шутка строковая функция, которую мы можем использовать, это перевести:

' 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' } )

Мак уже указал на метод "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()

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

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

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

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