book_generator/format_typo.py

46 lines
2.1 KiB
Python
Raw Normal View History

# corrige un fichier livre.org afin de supprimer les erreurs de typographie courantes:
# phrases sans majuscules
# plus de deux sauts de ligne consécutifs
# espaces manquants autour de certaines ponctuations.
import re
# Ouvrir le fichier livre.org en mode lecture
with open('livre.org', 'r') as f:
contenu = f.read()
# Corriger les phrases sans majuscules
contenu_corrige = re.sub(r"^([a-z])", lambda m: m.group(1).upper(), contenu, flags=re.MULTILINE)
nb_maj = sum(1 for m in re.finditer(r"^([a-z])", contenu)) - sum(1 for m in re.finditer(r"^([a-z])", contenu_corrige))
if nb_maj > 0:
print(f" Ajout de majuscules aux débuts de phrases : {nb_maj} modification(s)")
# Corriger les sauts de ligne consécutifs
contenu_corrige = re.sub(r'\n{3,}', '\n\n', contenu_corrige)
nb_sauts = len(re.findall(r'\n{3,}', contenu)) - len(re.findall(r'\n{3,}', contenu_corrige))
if nb_sauts > 0:
print(f" Suppression des sauts de ligne consécutifs : {nb_sauts} modification(s)")
# Corriger les espaces manquants autour de certaines ponctuations
contenu_corrige = re.sub(r"([.,;:!?])( )?", r"\1 ", contenu_corrige)
contenu_corrige = re.sub(r"( )([.,;:!?])", r" \2", contenu_corrige)
2024-11-02 00:05:23 +01:00
# replace demiquatratin by full quadratin
contenu_corrige = contenu_corrige.replace('', '')
contenu_corrige = contenu_corrige.replace(' ?', chr(160)+"?")
contenu_corrige = contenu_corrige.replace(' !', chr(160)+"!")
contenu_corrige = contenu_corrige.replace(' »', chr(160)+"»")
contenu_corrige = contenu_corrige.replace('« ', "«"+chr(160))
contenu_corrige = contenu_corrige.replace('ya', "y a")
nb_espaces = len(re.findall(r"([.,;:!?])( )?", contenu)) - len(re.findall(r"([.,;:!?])( )?", contenu_corrige)) + len(re.findall(r"( )([.,;:!?])", contenu)) - len(re.findall(r"( )([.,;:!?])", contenu_corrige))
if nb_espaces > 0:
print(f" Ajout d'espaces autour de certaines ponctuations : {nb_espaces} modification(s)")
# Sauvegarder le fichier livre.org corrigé
with open('livre.org', 'w') as f:
f.write(contenu_corrige)
# Faire un rapport des modifications apportées
if nb_maj == 0 and nb_sauts == 0 and nb_espaces == 0:
print("🎉 Pas de modifications à apporter !")