7

Простой способ удалить несколько пробелов в строке?

1

Вопрос:

У меня есть строка:

The fox jumped over the log.

Мне нужно преобразовать её в:

The fox jumped over the log.

Как проще всего убрать лишние пробелы между словами, не разбивая строку на список? Нужен самый простой способ (1-2 строки кода). Спасибо!

5 ответ(ов)

9

В Python для замены множества пробелов на один пробел в строке можно использовать модуль re, который предоставляет функции для работы с регулярными выражениями. В вашем примере использование re.sub позволяет заменить все последовательности пробелов на одинарный пробел.

Вот как это работает:

import re

# Заменяем все последовательности из одного или более пробелов на один пробел
result = re.sub(' +', ' ', 'The     quick brown    fox')

print(result)  # Вывод: 'The quick brown fox'

Здесь re.sub(' +', ' ', ...) принимает три аргумента: первое - регулярное выражение, второе - строку замены, и третье - исходную строку. Регулярное выражение ' +' соответствует одной или более последовательности пробелов. В результате все лишние пробелы в строке заменяются на один пробел, что и отражается в итоговом выводе.

0

Я вынужден согласиться с комментарием Пола Макила. Для меня вариант:

' '.join(the_string.split())

в разы предпочтительнее, чем использование регулярных выражений.

По моим замерам (Linux и Python 2.5), метод "разделить-объединить" работает почти в пять раз быстрее, чем использование "re.sub(...)", и все равно в три раза быстрее, если предварительно скомпилировать регулярное выражение и выполнять операцию несколько раз. Кроме того, этот метод значительно проще для понимания — намного более питонично.

0

Вы можете использовать модуль 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,}', которое находит последовательности из двух или более пробелов, и заменяет их на один пробел.

0

Вы можете использовать следующий метод, который хорошо работает даже в крайних случаях, например:

str1 = '          I   live    on    earth           '

result = ' '.join(str1.split())

Этот код удалит лишние пробелы и сожмет все пробелы до одного.

Если вы предпочитаете использовать регулярные выражения, этот вариант также подойдет:

import re

result = re.sub('\s+', ' ', str1).strip()

Тем не менее, в этом случае важно учитывать дополнительную обработку, чтобы удалить пробелы в начале и в конце строки с помощью метода strip().

0

Для того чтобы удалить пробелы из строки в 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" 

Таким образом, вы можете гибко управлять пробелами в строках, используя регулярные выражения. Если у вас есть дополнительные вопросы, не стесняйтесь задавать!

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь