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.

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}")
Je ne parviens pas au résultat souhaité.
Est-ce le pattern ou le code !?
Alain