From 262959b31fbe1d63f0fef839abc05817e190b967 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Sun, 20 Oct 2024 17:56:04 +0200 Subject: [PATCH] add clean org --- clean_org_file.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 clean_org_file.py diff --git a/clean_org_file.py b/clean_org_file.py new file mode 100755 index 0000000..dfb4999 --- /dev/null +++ b/clean_org_file.py @@ -0,0 +1,63 @@ +import argparse +import re + + +def upper_capital_prefix_postfix(match,prefix,postfix): + return prefix + upper_capital(match) + postfix + +def upper_capital(match): + return match.group(1).capitalize() + +def upper_capital_dot(match): + return upper_capital_prefix_postfix(match, '','.') + +def upper_capital_dot_interrogation(match): + return upper_capital_prefix_postfix(match, '','?') + +def upper_capital_dot_exclamation(match): + return upper_capital_prefix_postfix(match, '','!') + +def upper_capital_org_title(match): + return upper_capital_prefix_postfix(match, '* ','') + +def upper_capital_tiret(match): + return '- ' + upper_capital(match) + + +def normalize_text(content): + # Remplacer les doubles ou plus d'espaces par des espaces simples + content = re.sub(r'\s+',' ', content) + # Remplacer les retours à la ligne consécutifs supérieurs à 2 par au maximum 2 + # content = re.sub(r'\n\n\n', '\n\n', content) + # Corriger les règles d'espacement avec les deux points + # content = re.sub(r'\s+', '. ', content) + # Remplacer les eo par des vrais e dans l'o + content = re.sub(r'eo', 'œ', content) + # Remplacer trois points par le vrai caractère trois points + content = re.sub(r'\.\.\.|\.{3}', '…', content) + return content + +def capitalize_text(file_path): + with open(file_path, 'r') as file: + content = file.read() + # Capitaliser les premiers mots des phrases + content = re.sub(r'(\w+.*)\.', upper_capital_dot, content) + content = re.sub(r'(\w+.*)\?', upper_capital_dot_interrogation, content) + content = re.sub(r'(\w+.*)\!', upper_capital_dot_exclamation, content) + # Capitaliser les mots dans les titres Org-mode + # content = re.sub(r'\*+\[([^\]]+)\]', r'* \1', content) + content = re.sub(r'\*+\s(\w+)', upper_capital_org_title, content) + # Capitaliser les éléments de liste + content = re.sub(r'\-\s*(\w+)', upper_capital_tiret, content) + + + content = normalize_text(content) + + with open(file_path, 'w') as file: + file.write(content) + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Capitaliser les premiers mots des phrases dans un fichier texte.') + parser.add_argument('file_path', help='Le chemin du fichier à corriger.') + args = parser.parse_args() + capitalize_text(args.file_path)