Как преобразовать строку к нужному мне формату?

Необходимо описать класс 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)
# Получатель Семенов А.П.

→ Ссылка