преобразование одного и того же символа в разные символы в зависимости от положения в слове

1

Я благодарю coffee- дробилку за то, что задал мне вопрос несколько часов назад. Теперь, когда я член, я хотел бы немного перефразировать вопрос.

Каков наилучший способ заявить, что инициализация word- преобразуется в '$', а остальная часть 's' преобразуется в '5', используя регулярные выражения и python?

Я попытался сделать это в следующем коде, но результат неверен. Общее правило для 's' преобразования является жадным и не дает правилу word- initial 's', чтобы вступить в игру. Я был бы признателен за любую помощь в этом. Спасибо.

text = 'sassy'

for (regexp,subst) in [ (r's', '5'),(r'^s', '$') ]:

  text = re.sub(regexp,subst,text)

...

text

5A55y
Теги:

1 ответ

2
Лучший ответ

Вы просто не достаточно конкретны. Вам нужно подтверждение non- zero lookbehind на первом.

>>> text = 'sassy'
>>> for (regexp,subst) in [ (r'(?<=.)s', '5'),(r'^s', '$') ]:
...   text = re.sub(regexp,subst,text)
... 
>>> text
'$a55y'

Это или измените порядок.

Все ставки выходят, когда одна из ваших подстановок вступает в другое совпадение.

  • 0
    Большое спасибо, Игнасио! Работает отлично. Я не знал о ненулевом взгляде за утверждением. И спасибо Нику и Денису за то, что они были в первых рядах. Я не знал об этом. (Спасибо Андрею за редактирование отступа в моем коде. Я не смог заставить его выглядеть правильно.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню