point-median-backend/convertir_point_median.py

44 lines
1.7 KiB
Python
Raw Permalink Normal View History

2023-09-14 15:21:42 +00:00
import re
sep = r"[.\-/]"
def convertir_point_median(texte):
versions = [texte]
# Règles à 3 composantes
regles3 = [fr"(\w+){sep}(\w+[es]*){sep}([es]+)",
fr"([td]eur){sep}([td]rice){sep}([s]+)",
fr"(eur){sep}(ice|euse){sep}([s]+)",
fr"(er){sep}(ère){sep}([s]+)",
fr"([fs]){sep}([fs]{2}e){sep}([s]+)",
fr"([eo][lnt]){sep}([eo]?[lnt]+e){sep}([s]+)"]
for r in regles3:
versions.append(re.sub(r, r"\\\3", versions[-1]))
# Règles à 2 composantes
regles2 = [fr"(\w+){sep}([es]+)",
fr"([td]eur[s]?){sep}([td]?rice[s]?)",
fr"(eur[s]?){sep}(euse[s]?|ice[s]?)",
fr"(eux|el){sep}(elle[s]?|euse[s]?|le[s]?)",
fr"(aux|al){sep}(ale[s]?)",
fr"(er[s]?){sep}(ère[s]?)",
fr"([s]){sep}([s]{2}e[s]?)",
fr"([eo][flnt][s]?){sep}([eo]?[flnt]+e[s]?)",
fr"(\w+e){sep}(\w+a)",
fr"(\w+t){sep}(te)"]
for r in regles2:
versions.append(re.sub(r, r"\\2", versions[-1]))
# Règles avec des parenthèses
reglesp = [r"(\w+)[\(]([es]+)[\)]",
r"([td]eur[s]?)[\(]([td]?rice[s]?)[\)]",
r"(eur[s]?)[\(](euse[s]?|ice[s]?)[\)]",
r"(eux|el)[\(](elle[s]?|euse[s]?|le[s]?)[\)]",
r"(aux|al)[\(](ale[s]?)[\)]",
r"(er[s]?)[\(](ère[s]?)[\)]",
r"([s])[\(]([s]{2}e[s]?)[\)]",
r"([eo][flnt][s]?)[\(]([eo]?[flnt]+e[s]?)[\)]",
r"(\w+e)[\(](\w+a)[\)]",
r"(\w+t)[\(](te)[\)]"]
for r in reglesp:
versions.append(re.sub(r, r"\\2", versions[-1]))
return versions[-1]