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