Удалить все пробелы в строке в 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)
удалить пробелы как в начале, так и в конце 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)
' 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()
все три строковые функции
strip
lstrip
иrstrip
может принимать параметры строки для полосы, при этом по умолчанию все белые пространство. Это может быть полезно, когда вы работаете с чем-то конкретным, например, вы можете удалить только пробелы, но не новые строки:" 1. Step 1\n".strip(" ")
или вы можете удалить лишние запятые при чтении в списке строк:
"1,2,3,".strip(",")