Реверсировать слова в строке, сохраняя пробелы

Пробовал так, но остаётся только 1 пробел:

def backward_string_by_word(text: str) -> str:
    b = [word[::-1] for word in text.split()]
        
    return ' '.join(b)

if __name__ == '__main__':
    print("Example:")
    assert backward_string_by_word('hello  world') == 'olleh  dlrow'

Как сохранить количество пробелов(hello world - 2 пробела, на выводе должно остаться столько же)?


Ответы (2 шт):

Автор решения: Alealan

Решено найдено.

return ' '.join(s[::-1] for s in str.split(' '))

Спасибо, @Интик!

→ Ссылка
Автор решения: evg

Сохраняем пробелы - 2 варианта:

import re
def reversed_text(text):
    l=re.findall(r'([a-zA-Z]+|[ ]+)',text)
    new_text=''
    for e in l:
        new_text+=e[::-1]
    return new_text
 

def reversed_text2(text):
    nt=''
    w=''
    zap=0
    for i,s in enumerate(text):
         if s!=' ':
           zap=1
           w+=s
           if i==len(text)-1:
             nt+=w[::-1]
         else:
           zap=0
           nt+=w[::-1]
           w=''
           nt+='_'
                    
    return nt   

print(reversed_text('abc def    gh'))
print(reversed_text('abc'))
print(reversed_text(' def    gh'))
print(reversed_text(''))

print(reversed_text2('abc def    gh'))
print(reversed_text2('abc'))
print(reversed_text2(' def    gh'))
print(reversed_text2(''))
→ Ссылка