Вопрос-Ответ

Remove all whitespace in a string

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

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

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

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

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

Переведено автоматически
Ответ 1

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

>>> "  hello  apple  ".strip()
'hello apple'

Если вы хотите удалить все символы пробела, используйте str.replace() (ПРИМЕЧАНИЕ: это удаляет только “обычный” символ пробела ASCII ' ' U+0020 но не любые другие пробелы):

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

Если вы хотите удалить дублирующиеся пробелы, используйте str.split(), за которым следует str.join():

>>> " ".join("  hello  apple  ".split())
'hello apple'
Ответ 2

Чтобы удалить только пробелы, используйте str.replace:

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

Чтобы удалить все символы пробела (пробел, табуляцию, перевод строки и так далее), вы можете использовать split then join:

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

или регулярное выражение:

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

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

sentence = sentence.strip()

Вы также можете использовать lstrip для удаления пробелов только из начала строки и rstrip для удаления пробелов из конца строки.

Ответ 3

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

Удалите ВСЕ пробелы в строке, даже между словами:

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)

Ответ 4

"Пробел" включает в себя пробел, табуляцию и CRLF. Итак, элегантная и однострочная строковая функция, которую мы можем использовать, - это str.translate:

Python 3

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

ИЛИ если вы хотите быть доскональным:

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

Python 2

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

ИЛИ если вы хотите быть доскональным:

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