Както давно, при написании тестов команда не смогла найти библиотек для генерации имен и фамилий на русском языке. Существует библиотека names, но она работает только для английских имен. Я напарсил данных, набросал скрипт с небольшим фукнционалом и дальше понемногу его расширял. В итоге, из этого выросла небольшая библиотека russian-names (https://github.com/cybermatt/russian-names).
Установка:
1 | $ pip install russian-names |
Импорт:
1 | >>> from russian_names import RussianNames |
Пользоваться просто, вариант без настроек будет удобен в большинстве случаев:
1 2 3 | >>> RussianNames().get_person() Юрий Сергеевич Живицкий |
Для тонкой настройки доступно множество опций, описаных в таблице.
Можно получать имена пачками, размер передается в параметре count.
1 2 3 4 5 | >>> rn = RussianNames(count=5, patronymic=False, name_reduction=True) >>> batch = rn.get_batch() >>> print(batch) ('Л. Ходилова', 'А. Креткова', 'Р. Тишанов', 'И. Закудряев', 'В. Демчин') |
Или использовать в режиме генератора:
1 2 3 4 5 6 7 8 9 10 11 | >>> rn = RussianNames(count=7, patronymic=False, transliterate=True) >>> for person in rn: print(person) Valeriy Forunin Pavel Senakosov Violetta Scherbovskaya Natalya Furshtatova Violetta Chuhontseva Polina Aksentsova Galina Botova |
Вот еще несколько примеров использования:
Для имен на кредитных картах:
1 2 3 | >>> RussianNames(count=3, patronymic=False, transliterate=True, uppercase=True).get_batch() ('SEMEN SISYKIN', 'LYBOV POLEZAEVA', 'MIHAIL KAMAGOROV') |
Имена учасников опросов:
1 2 3 | >>> RussianNames(count=3, surname_reduction=True).get_batch() ('Анатолий Юрьевич Ш.', 'Софья Ивановна Т.', 'Валерия Валерьевна Н.') |
Только женщины:
1 2 3 | >>> RussianNames(count=3, gender=0.0).get_batch() ('Кристина Петровна Тоншина', 'Клавдия Эдуардовна Караулова', 'Лариса Викторовна Короткина') |
Можно изменить формат вывода, например, выбрать список из словарей:
1 2 3 4 5 6 7 | >>> RussianNames(count=3, output_type='dict').get_batch() ( {'name': 'Кирилл', 'patronymic': 'Денисович', 'surname': 'Дрожжов'}, {'name': 'Андрей', 'patronymic': 'Кириллович', 'surname': 'Шувиков'}, {'name': 'Роман', 'patronymic': 'Евгеньевич', 'surname': 'Малеванкин'} ) |