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)