Удалить все пробелы в строке в 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)
' 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(",")