Проверка выполнения операции
Вопрос следующего характера:
Есть строка, в ней символы разделены некоторым количеством пробелов. Надо привести её к строке, в которой символы разделены лишь 1 пробелом. Моё решение следующее:
b = " "
i = 1
while i > 0:
str = str.replace(b, " ")
Присваиваю b значение 2 пробела, и заменяем во всей строке 2 пробела на 1. Таким образом, в строке между каждым символом в итоге останется 1 пробел.
Но, при моем подходе, надо проверить, произошла ли на очередной итерации цикла замена, что бы присвоить i значение -1 и остановить цикл, если замены не произошло, и между каждым символом строки уже стоит 1 пробел. Подскажите пожалуйста, как это сделать (если это можно сделать), если нельзя, то предложите своё решение.
Заранее благодарю за ответы.
Ответы (2 шт):
Как вариант:
_str- строка_str.split()- разбиение строки по разделителю пробел' '.join(список)- сборка строки из списка с разделителем' '
_str = """
Вопрос следующего характера:
Есть строка, в ней символы разделены некоторым количеством пробелов.
Надо привести её к строке, в которой символы разделены лишь 1 пробелом.
"""
print(' '.join(_str.split()))
читаем Функции и методы строк https://pythonworld.ru/tipy-dannyx-v-python/stroki-funkcii-i-metody-strok.html
(Не используйте имя str для вашей строки, потому что это имя встроенной функции.)
Вы пишете:
... надо проверить, произошла ли на очередной итерации цикла замена ...
Так эту проверку просто сделайте:
old_str = "Какая красивая девушка! "
new_str = ""
b = " "
while new_str != old_str:
new_str = old_str.replace(b, " ")
new_str, old_str = old_str, new_str
print(new_str)
Вывод:
Какая красивая девушка!
Но ваш подход (заменять в цикле 2 пробели одним) не решит проблему с пробелями в начале (и в конце) строки — тогда один пробел остается.