#python #string
#python #строка
Вопрос:
У меня есть строка;
txt = "Hello$JOHN$*How*Are*$You"
Я хочу, чтобы вывод выглядел так:
Output: "You*$Are*How$*JOHN$Hello"
Если вы внимательно посмотрите, разделители символов ($ and *)
НЕ меняются местами в их последовательности появления. Строка реверсируется по слову, но разделители сохраняются последовательно.
Я попробовал следующее:
sep=['
Я не могу придумать логику для захвата последовательности разделителей и изменения слов строки.
Ответ №1:
Один из подходов с использованием регулярных выражений:
import re
s = "Hello$JOHN$*How*Are*$You"
splits = re.split('([$*] )', s)
res = ''.join(reversed(splits))
print(res)
Вывод
You*$Are*How$*JOHN$Hello
(Возможно, менее элегантное) решение (но более понятное) - использовать itertools.groupby:
from itertools import groupby
s = "Hello$JOHN$*How*Are*$You"
splits = [''.join(g) for k, g in groupby(s, key=lambda x: x in ('
Идея здесь состоит в том, чтобы создать непрерывную последовательность символов-разделителей, не являющихся разделителями.
,'*']
txt_1 = ""
for ch in txt:
if ch in sep:
txt_1 = txt_1 ch
Я не могу придумать логику для захвата последовательности разделителей и изменения слов строки.
Ответ №1:
Один из подходов с использованием регулярных выражений:
Вывод
(Возможно, менее элегантное) решение (но более понятное) - использовать itertools.groupby:
Идея здесь состоит в том, чтобы создать непрерывную последовательность символов-разделителей, не являющихся разделителями.
, '*'))]
res = ''.join(reversed(splits))
print(res)
Идея здесь состоит в том, чтобы создать непрерывную последовательность символов-разделителей, не являющихся разделителями.
,‘*’]
txt_1 = «»
for ch in txt:
if ch in sep:
txt_1 = txt_1 ch
Я не могу придумать логику для захвата последовательности разделителей и изменения слов строки.
Ответ №1:
Один из подходов с использованием регулярных выражений:
Вывод
(Возможно, менее элегантное) решение (но более понятное) — использовать itertools.groupby:
Идея здесь состоит в том, чтобы создать непрерывную последовательность символов-разделителей, не являющихся разделителями.