book_generator/format_typo.py

46 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)
# 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 !")