Как преобразовать строку к нужному мне формату?
Необходимо описать класс Name. Экземпляр класса создается одной строкой, состоящей из 2-3 слов (на это нужна проверка). Нужно описать метод strfname(format), который преобразует строку по переданному формату, где
%Ф - фамилия,
%ф - первая буква фамилии,
%И - имя,
%и - первая буква имени
%О - отчество,
% - первая буква отчества
Например: Name.strfname('%и. %о. %Ф') - И. И. Иванов
Подскажите, как можно описать метод strfname?
class Name:
def __init__(self, fio):
if 2<=len(fio.split())<=3:
self.fio = fio
else:
print('Введите корректное значение')
Ответы (1 шт):
Автор решения: Namerek
→ Ссылка
Если я правильно понял задачу, то в качастве идеи могу предложить вариант, если понравится соберите из него класс или функцию
fio = 'Семенов;Ареадий;Петрович'
surname, name, patronymic = fio.split(';')
text = 'Получатель %фамилия %и%о'
strfmt = [
('%и', name[0].upper() + '.'),
('%ф', surname[0].upper() + '.'),
('%о', patronymic[0].upper() + '.'),
('%имя', name.capitalize()),
('%фамилия', surname.capitalize()),
('%отчество', patronymic.capitalize())
]
for pat, val in sorted(strfmt, key=lambda x: len(x[0]), reverse=True):
text = text.replace(pat, val)
print(text)
# Получатель Семенов А.П.