Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 31, 2021 09:42:52

Alexey_mne31
Зарегистрирован: 2021-08-09
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Реверс слов строки.

Доброго времени суток.
Имеется задача: перевернуть все слова в строке, но оставить их на своем месте:
Выдумал вот такой вот код:

 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 (Авг. 31, 2021 09:46:44)

Офлайн

#2 Авг. 31, 2021 09:53:47

Alexey_mne31
Зарегистрирован: 2021-08-09
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Реверс слов строки.

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

 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'))

Отредактировано Alexey_mne31 (Авг. 31, 2021 09:57:15)

Офлайн

#3 Авг. 31, 2021 11:34:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Реверс слов строки.

  
>>> import re
>>> 
>>> text = 'abc def  ghi'
>>> 
>>> out = re.sub(r'\b\S+\b', lambda mo: mo.group()[::-1], text)
>>> out
'cba fed  ihg'
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version