33 lines
1.2 KiB
Python
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:]
|
|
) |