аватар question@mail.ru · 01.01.1970 03:00

Замена в строке двойного пробела на одинарный

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

str = 'A l a  m a  k o t a'

Как видно в строке, между буквами одного слова у меня один пробел, между словами два.
Хочу преобразовать строку в :

'Ala ma kota'

Пытался решить так, но потерпел крах:

Cначала меняю двойные пробелы на '`':

for i in range(len(str)-1):    if str[i] == ' ' and str[i+1]== ' ':        comment.replace('str[i]', '`')        comment.replace('str[i + 1]', '`')

Потом удаляю одинарные:

str.replace(' ', '')

И в конце заменяю '`' на пробел:

str.replace('`',' ')

Но вся эта конструкция не работает. Как можно решить данную задачу?

аватар answer@mail.ru · 01.01.1970 03:00

Не называйте переменные именами встроенных типов!

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

import reregex = r""\s(\s)?""test_str = ""'A l a  m a  k o t a'""subst = ""\\1""print(re.sub(regex, subst, test_str)) # 'Ala ma kota'


а вот так можно заменить любое кол-во пробелов, больше одного, на один пробел

regex = r""\s((\s)(\s+)?)?""subst = ""\\2""result = re.sub(regex, subst, test_str)

Последние

Похожие