данных, пользователи , три региона en be ru, пользуюсь mimesis , сделал белорусскую локаль на основе русской,вот как выглядит код, может подскажите как можно улучшить? оптимизировать
import sys
import random
from mimesis import Person
from mimesis import Address
from mimesis.enums import Gender
from mimesis.builtins import RussiaSpecProvider
from mimesis.builtins import BelarusianSpecProvider
ru = RussiaSpecProvider()
by = BelarusianSpecProvider()
locale = sys.argv[1]
count = int(sys.argv[2])
address = Address(f'{locale}')
person = Person(f'{locale}')
if locale == 'ru':
for _ in range(count):
sex = random.choice([Gender.MALE, Gender.FEMALE])
print(f'{person.full_name(gender = sex)} {ru.patronymic(gender = sex)}, {address.country()}, {address.state()}, {address.city()}, {address.address()}, {person.telephone()};')
if locale == 'be':
for _ in range(count):
sex = random.choice([Gender.MALE, Gender.FEMALE])
print(f'{person.full_name(gender = sex)} {by.patronymic(gender = sex)}, {address.country()}, {address.state()}, {address.city()}, {address.address()}, {person.telephone()};')
if locale == 'en':
for _ in range(count):
sex = random.choice([Gender.MALE, Gender.FEMALE])
print(f'{person.full_name(gender = sex)}, {address.country()}, {address.state()}, {address.city()}, {address.address()}, {person.telephone()};')
print('number of records: ', count)
Потыкаться в gettext
А, тут ещё тупее. Можешь просто в ифе оставить локаль, остальная стена кода одна и та же, только не будет повторяться уже. Или можешь вынести в словарь провайдеров локали locales = { 'ru': RussianLocaleProvider(), 'by': BelarusianLocaleProvider() } provider = locales.get(locale) ... if provider: print(..., provider.patronymic(gender=sex) И одна и та же стена кода не будет повторяться . _.
Обсуждают сегодня