Простой способ удалить несколько пробелов в строке?
Вопрос:
У меня есть строка:
The fox jumped over the log.
Мне нужно преобразовать её в:
The fox jumped over the log.
Как проще всего убрать лишние пробелы между словами, не разбивая строку на список? Нужен самый простой способ (1-2 строки кода). Спасибо!
5 ответ(ов)
В Python для замены множества пробелов на один пробел в строке можно использовать модуль re
, который предоставляет функции для работы с регулярными выражениями. В вашем примере использование re.sub
позволяет заменить все последовательности пробелов на одинарный пробел.
Вот как это работает:
import re
# Заменяем все последовательности из одного или более пробелов на один пробел
result = re.sub(' +', ' ', 'The quick brown fox')
print(result) # Вывод: 'The quick brown fox'
Здесь re.sub(' +', ' ', ...)
принимает три аргумента: первое - регулярное выражение, второе - строку замены, и третье - исходную строку. Регулярное выражение ' +'
соответствует одной или более последовательности пробелов. В результате все лишние пробелы в строке заменяются на один пробел, что и отражается в итоговом выводе.
Я вынужден согласиться с комментарием Пола Макила. Для меня вариант:
' '.join(the_string.split())
в разы предпочтительнее, чем использование регулярных выражений.
По моим замерам (Linux и Python 2.5), метод "разделить-объединить" работает почти в пять раз быстрее, чем использование "re.sub(...)", и все равно в три раза быстрее, если предварительно скомпилировать регулярное выражение и выполнять операцию несколько раз. Кроме того, этот метод значительно проще для понимания — намного более питонично.
Вы можете использовать модуль re
для замены двух или более пробелов на один пробел в строке. Вот пример кода, который демонстрирует это:
import re
s = "The fox jumped over the log."
result = re.sub(r'\s{2,}', ' ', s)
print(result) # Вывод: 'The fox jumped over the log.'
В данном случае функция re.sub
принимает регулярное выражение r'\s{2,}'
, которое находит последовательности из двух или более пробелов, и заменяет их на один пробел.
Вы можете использовать следующий метод, который хорошо работает даже в крайних случаях, например:
str1 = ' I live on earth '
result = ' '.join(str1.split())
Этот код удалит лишние пробелы и сожмет все пробелы до одного.
Если вы предпочитаете использовать регулярные выражения, этот вариант также подойдет:
import re
result = re.sub('\s+', ' ', str1).strip()
Тем не менее, в этом случае важно учитывать дополнительную обработку, чтобы удалить пробелы в начале и в конце строки с помощью метода strip()
.
Для того чтобы удалить пробелы из строки в Python, вы можете использовать модуль re
, который предоставляет функциональность регулярных выражений. Вот пример кода, который показывает, как это можно сделать:
import re
Text = " You can select below trims for removing white space!! BR Aliakbar "
# Убираем все пробелы
print('Remove all space:', re.sub(r"\s+", "", Text), sep='')
# Убираем пробелы слева
print('Remove leading space:', re.sub(r"^\s+", "", Text), sep='')
# Убираем пробелы справа
print('Remove trailing spaces:', re.sub(r"\s+$", "", Text), sep='')
# Убираем пробелы с обеих сторон
print('Remove leading and trailing spaces:', re.sub(r"^\s+|\s+$", "", Text), sep='')
# Заменяем более чем один пробел в строке одним пробелом
print('Remove more than one space:', re.sub(' +', ' ', Text), sep='')
Результат: как код
"Remove all space:Youcanselectbelowtrimsforremovingwhitespace!!BRAliakbar"
"Remove leading space:You can select below trims for removing white space!! BR Aliakbar"
"Remove trailing spaces: You can select below trims for removing white space!! BR Aliakbar"
"Remove leading and trailing spaces:You can select below trims for removing white space!! BR Aliakbar"
"Remove more than one space: You can select below trims for removing white space!! BR Aliakbar"
Таким образом, вы можете гибко управлять пробелами в строках, используя регулярные выражения. Если у вас есть дополнительные вопросы, не стесняйтесь задавать!
Фильтрация DataFrame pandas по критериям подстроки
Разделить строку по пробелам в Python
Как заполнить строку в Python пробелами?
Диапазон букв в Python
Как создать строку с разделением запятой из списка строк?