Реверсировать слова в строке, сохраняя пробелы
Пробовал так, но остаётся только 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(''))