Python удаляет все пробелы в строке

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

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

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

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

Ответ 1

Если вы хотите удалить начальные и конечные пробелы, используйте 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'

Ответ 2

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

Ответ 3

Если вы также хотите удалить все другие странные символы пробелов, которые существуют в юникоде, вы можете использовать re.sub с аргументом re.UNICODE:

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

... потому что вы действительно хотите сохранить эти странные символы Юникода?

Ответ 4

Пробелы содержат пробел, вкладки и CRLF. Таким образом, элегантная и однострочная строковая функция, которую мы можем использовать, - переводить. (Удивленный никто не упоминал об этом!)

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

ИЛИ, если вы хотите быть тщательным

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

Ответ 5

Для удаления пробелов с начала и конца используйте strip.

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

Ответ 6

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

MaK уже указал метод вышеперечисленного. И этот вариант работает с Python 3 (см. этот Q & A).

Ответ 7

Будьте осторожны:

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

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

Ответ 8

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