46 lines
2.1 KiB
Python
46 lines
2.1 KiB
Python
# 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('y’a', "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 !")
|