groscon/gen_dict.py
2023-07-20 01:48:23 +02:00

33 lines
1.2 KiB
Python

# -*- coding: utf-8 -*-
#Générateur Rationel d'Organisations Spéciales, Complexes, Ordinaires ou Nationales
import json
import re
from collections import defaultdict
from random import choice
pattern = re.compile(r"(?P<mot>(?:\w{1,3}\W)*(?P<initiale>\w)\S{2,}\w)")
noms = [defaultdict(set), defaultdict(set)]
# https://www.data.gouv.fr/fr/datasets/referentiel-de-lorganisation-administrative-de-letat/#/resources
with open(r"./dila_refOrga_admin_Etat_fr_20230719.json", 'r', encoding="utf-8") as f:
services = json.load(f)["service"]
for service in services:
matches = pattern.finditer(service["nom"])
premier_match = next(matches)
noms[0][premier_match.group("initiale").upper()].add(premier_match.group("mot"))
for match in matches:
noms[1][match.group("initiale").upper()].add(match.group("mot"))
noms[0] = {initiale: sorted(noms) for initiale, noms in sorted(noms[0].items())}
noms[1] = {initiale: sorted(noms) for initiale, noms in sorted(noms[1].items())}
with open(r"noms.json", 'w', encoding="utf-8") as f:
json.dump(noms, f)
def baptise(sigle):
sigle = sigle.upper()
return choice(noms[0][sigle[0].upper()]) + " " + " ".join(
choice(noms[1][lettre]) for lettre in sigle[1:]
)