Я хочу исключить все пробелы из строки, на обоих концах и между словами.
У меня есть этот код Python:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
Но это только устраняет пробелы с обеих сторон строки. Как мне удалить все пробелы?
python
trim
removing-whitespace
co2f2e
источник
источник
hello apple
?helloapple
?Ответы:
Если вы хотите удалить начальные и конечные пробелы, используйте
str.strip()
:Если вы хотите удалить все пробелы, используйте
str.replace()
:(NB это только удаляет «нормальный» символ пробела ASCII,
' ' U+0020
но не любой другой пробел )Если вы хотите удалить дублирующиеся пробелы, используйте
str.split()
:источник
sentence.join(str_list)
вы просите python объединить элементы из str_list сsentence
разделителем."".join(sentence.split())
действительно является каноническим решением, эффективно удаляющим все пробелы, а не просто пробелы. Пометить Байерс " отличный ответ , вероятно, был принят вместо этого менее применимого ответа.Чтобы удалить только пробелы, используйте
str.replace
:Для того, чтобы удалить все символы пробела (пробел, табуляция, перевод строки, и так далее) , вы можете использовать
split
тоjoin
:или регулярное выражение:
Если вы хотите удалить только пробелы с начала и до конца, вы можете использовать
strip
:Вы также можете использовать
lstrip
для удаления пробелов только из начала строки, а такжеrstrip
для удаления пробелов из конца строки.источник
yourstr.translate(str.maketrans('', '', ' \n\t\r'))
Альтернативой является использование регулярных выражений и сопоставление этих странных пробелов . Вот некоторые примеры:
Удалить ВСЕ пробелы в строке, даже между словами:
Удалите пробелы в начале строки:
Удалить пробелы в конце строки:
Удалите пробелы как в начале, так и в конце строки:
Удалить ТОЛЬКО ДУБЛИРОВАННЫЕ пробелы:
(Все примеры работают как в Python 2, так и в Python 3)
источник
Пробел включает в себя пробел, вкладки и CRLF . Итак, элегантная и однострочная строковая функция, которую мы можем использовать
str.translate
:Python 3
ИЛИ если вы хотите быть тщательным:
Python 2
ИЛИ если вы хотите быть тщательным:
источник
\xc2\xa0
ans.translate( None, string.whitespace )
производит толькоbuiltins.TypeError: translate() takes exactly one argument (2 given)
для меня. Документы говорят, что аргумент является таблицей перевода, см. String.maketrans (). Но см. Комментарий Амнона Харела ниже.' hello apple'.translate(str.maketrans('', '', string.whitespace))
Примечание: лучше создать переменную для хранения таблицы, если вы собираетесь делать это несколько раз.Для удаления пробелов из начала и конца используйте
strip
.источник
МаК уже указывал на метод «перевода» выше. И этот вариант работает с Python 3 (см. Этот раздел вопросов и ответов ).
источник
xxx.translate( { ord(c) :None for c in string.whitespace } )
для тщательности.Быть осторожен:
strip
выполняет команды rstrip и lstrip (удаляет начальные и конечные пробелы, символы табуляции, возвраты и каналы, но не удаляет их в середине строки).Если вы заменяете только пробелы и табуляции, вы можете получить скрытые CRLF, которые выглядят так, как вы ищете, но не совпадают.
источник
источник
Кроме того, полоса имеет несколько вариаций:
Удалите пробелы в начале и в конце строки:
Удалите пробелы в начале строки:
Удалить пробелы в конце строки:
Все три строковые функции
strip
lstrip
, иrstrip
может принимать параметры строки в полосе, с по умолчанию не все белое пространство. Это может быть полезно, когда вы работаете с чем-то конкретным, например, вы можете удалить только пробелы, но не переводы строк:Или вы можете удалить лишние запятые при чтении в списке строк:
источник
Документы Python:
источник
re
, что предлагалось ранее, но я обнаружил, что фактический ответ на заголовок вопроса был немного скрыт среди всех других вариантов.