Как мне убрать все пробелы в строке Python? Например, я хочу, чтобы строка, подобная которой, strip my spaces
была превращена stripmyspaces
, но я не могу сделать это с помощью strip()
:
>>> 'strip my spaces'.strip()
'strip my spaces'
python
python-3.x
spaces
strip
неправильное имя пользователя
источник
источник
Ответы:
Воспользуйтесь преимуществами поведения str.split без параметра sep:
Если вы просто хотите удалить пробелы вместо всех пробелов:
Преждевременная оптимизация
Несмотря на то, что эффективность не является главной целью - написание ясного кода - вот некоторые начальные моменты времени:
Обратите внимание, что регулярное выражение кэшируется, поэтому оно не такое медленное, как вы думаете. Компиляция его заранее помогает некоторым, но на практике это будет иметь значение только в том случае, если вы вызываете это много раз:
Несмотря на то, что re.sub медленнее в 11,3 раза, помните, что ваши узкие места наверняка в другом месте. Большинство программ не заметят разницы между любым из этих 3 вариантов.
источник
\s+
замена. Я бы придерживался ре.s.translate
метод случайно? Вероятно, это лучше, чем все методы, показанные на этой странице.None
- хотя, что удивительно, это делает его медленнее ...myString.translate(None, " \t\r\n\v")
. Это займет всего 83% до тех пор, пока самая быстрая техника Роджера (разделение и соединение). Не уверен, что он охватывает все пробельные символы, которые разделяет, но, вероятно, будет достаточно для большинства приложений ASCII.Также обрабатывает любые пробельные символы, о которых вы не думаете (поверьте, их много).
источник
С другой стороны,
И вот версия Python3:
источник
NameError: name 'string' is not defined
,import string
Самое простое - это заменить:
В качестве альтернативы используйте регулярное выражение:
источник
Удалить начальные пробелы в Python
Удалить конечные или конечные пробелы в Python
Удалите пробелы из начала и конца строки в Python
Удалить все пробелы в питоне
источник
Попробуйте регулярное выражение с
re.sub
. Вы можете найти все пробелы и заменить на пустую строку.\s
в вашем шаблоне будут совпадать пробельные символы - а не просто пробел (табуляции, новые строки и т. д.). Вы можете прочитать больше об этом в руководстве .источник
источник
Как упоминал Роджер Пейт, следующий код работал для меня:
Я использую Jupyter Notebook для запуска следующего кода:
источник
Применяются стандартные методы фильтрации списка, хотя они не так эффективны, как методы
split/join
илиtranslate
.Нам нужен набор пробелов:
filter
Встроенная:Понимание списка (да, используйте скобки: см. Тест ниже):
Сгиб:
Ориентир:
источник
TL / DR
Это решение было протестировано с использованием Python 3.6
Чтобы удалить все пробелы из строки в Python3, вы можете использовать следующую функцию:
Чтобы удалить любые пробельные символы ('\ t \ n \ r \ x0b \ x0c'), вы можете использовать следующую функцию:
объяснение
str.translate
Метод Python - это встроенный метод класса str, он берет таблицу и возвращает копию строки, в которой каждый символ отображается через переданную таблицу перевода. Полная документация для str.translateДля создания таблицы перевода
str.maketrans
используется. Этот метод является еще одним встроенным методом классаstr
. Здесь мы используем его только с одним параметром, в данном случае это словарь, где ключи - это заменяемые символы, сопоставленные со значениями со значением замены символов. Возвращает таблицу перевода для использования сstr.translate
. Полная документация для str.maketransstring
Модуль питона содержит некоторые общие операции строки и константы.string.whitespace
константа, которая возвращает строку, содержащую все символы ASCII, которые считаются пробелами. Сюда входят пространство символов, табуляция, перевод строки, возврат, подача формы и вертикальная табуляция. Полная документация для строкиВо второй функции
dict.fromkeys
используется словарь для создания, где ключами являются символы в строке, возвращаемыеstring.whitespace
каждым со значениемNone
. Полная документация для dict.fromkeysисточник
Если оптимальная производительность не является обязательным требованием и вы просто хотите что-то очень простое, вы можете определить базовую функцию для проверки каждого символа, используя встроенный в класс «isspace» метод строкового класса:
Построение
no_white_space
строки таким способом не будет иметь идеальной производительности, но решение легко понять.Если вы не хотите определять функцию, вы можете преобразовать ее во что-то неопределенно похожее с пониманием списка. Заимствование из верхнего ответа
join
решения:источник