nixp.ru v3.0

25 мая 2017,
четверг,
15:24:00 MSK

DevOps с компанией «Флант»
Аватар пользователя myst
myst написал 3 апреля 2009 года в 00:29 (441 просмотр) Ведет себя как Череп; открыл 50 тем в форуме, оставил 2987 комментариев на сайте.

Задача: если фамилия начинается с приставки Mac или Mc, сделать следующую за приставкой букву заглавной. На Python.

Пример (Perl):

$last_name =~ s/^Mac|Mc\K(.)/\U$1/;

Пример (Python):

last_name = re.sub('^(?<=Mac|Mc).', lambda m: m.group().upper(), last_name)

Вопрос: есть ли способ сделать это на Python менее извратно? Если есть, то какой.

Дмитрий Шурупов

А что тут извратного? По-моему, красиво ;-)

И я бы вместо '.' сделал '[a-z]', а вместо Mac|Mc — 'Ma?c’.

P.S. Не знаю. Подозреваю, что нет такого способа.

myst

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

last_name = re.sub('^(?<=Mac).|^(?<=Mc).', lambda m: m.group().upper(), last_name)