Hello,
Dans dans un fichier.rtf, le script doit détecter s'il manque une parenthèse ouvrante avant un mot en majuscule de 1 à 4 lettres suivi d'une parenthèse fermante.
exemple de ligne : Louise, N : 4-5-1736 (H), Pa : Pierre (DSC) ; Ma : SOULAINE Louise BH)
Dans ce cas, la fonction détecte une erreur et affiche le contenu de la ligne.
Le pattern = r'(?<!\()[A-Z]{1,4}\)'
- (?<!\(): Assure qu'il n'y a pas de parenthèse ouvrante avant la position actuelle.
- [A-Z]{1,4}: Correspond à un mot en majuscule de 1 à 4 lettres.
- \): Correspond à une parenthèse fermante.
Je ne parviens pas au résultat souhaité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 def cherche_parenthese_ouvrante_hameau_rtf(targetFile): with open(targetFile, 'r', encoding='latin-1') as file: rtf_content = file.read() #pattern = r'(?<!\()[A-Z]{1,4}\)' pattern = r'(?<!\()[A-Z]{1,4}\)' matches = re.finditer(pattern, rtf_content) for match in matches: #print(match) start = match.start() #print(rtf_content[:start]) # ligne concernée print(match.group()) if '(' not in rtf_content[:start]: print(f"Erreur détectée : {match.group()} à la position {start}")
Est-ce le pattern ou le code !?
Alain
Partager