Найти - Пользователи
Полная версия: Реверс слов строки.
Начало » Python для новичков » Реверс слов строки.
1
Alexey_mne31
Доброго времени суток.
Имеется задача: перевернуть все слова в строке, но оставить их на своем месте:
Выдумал вот такой вот код:
 def backward_string_by_word(text: str) -> str:
    import re
    workarray=re.findall('[a-zA-Z]+',text)
    for i in workarray:
        text2=text.replace(i,''.join(reversed(i)))
    return text2, workarray[0] in text
print(backward_string_by_word('abc def  ghi'))

Почему-то его интерпретация не дает нужного результата, а именно - переворачивается только последнее слово.
Выглядит результат вот так:

 ('abc def  ihg', True)

Может кто пояснит от Ж по Ж, в чем я неправ?
Alexey_mne31
Все, сам понял.
Каждый раз беру изначальный текст.
Вот так все работает:
 def backward_string_by_word(text: str) -> str:
    import re
    workarray=re.findall('[a-zA-Z]+',text)
    for i in workarray:
        text=text.replace(i,''.join(reversed(i)))
    return text
print(backward_string_by_word('abc def  ghi    jkl'))
py.user.next
  
>>> import re
>>> 
>>> text = 'abc def  ghi'
>>> 
>>> out = re.sub(r'\b\S+\b', lambda mo: mo.group()[::-1], text)
>>> out
'cba fed  ihg'
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB