[..] Extraction Nom Prénom
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
[..] Extraction Nom Prénom
Bonjour
J'ai un fichier avec de nombreuses lignes et je dois extraire les noms et prénoms.
Voici 3 exemples de lignes :
HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André Normandie 17 2T 1T 4P 3T
HERBELIN Patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude Anjou 22 2T 2K 3T 3T
BARBARA DA CUNA Patricia THIEBAULT Denise CHETBOUN Gilles CLOU Lucienne Ile de France 22 2K 2C 4C 4K
La première est simple mais ensuite....
Merci aux spécialistes des expressions régulières de me filer un petit coup de pouce... si c'est faisable
J'ai un fichier avec de nombreuses lignes et je dois extraire les noms et prénoms.
Voici 3 exemples de lignes :
HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André Normandie 17 2T 1T 4P 3T
HERBELIN Patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude Anjou 22 2T 2K 3T 3T
BARBARA DA CUNA Patricia THIEBAULT Denise CHETBOUN Gilles CLOU Lucienne Ile de France 22 2K 2C 4C 4K
La première est simple mais ensuite....
Merci aux spécialistes des expressions régulières de me filer un petit coup de pouce... si c'est faisable
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Ce serait nettement plus facile si le texte pouvait être trié en amont, ex. sans les "Ile de France 22 2K 2C 4C 4K" etc
C'est faisable ?
C'est faisable ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
OUi j'ai une table dans laquelle j'ai tous les noms des provinces.
On peut donc supprimer la fin de chaque ligne :
HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André
HERBELIN Patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude
BARBARA DA CUNA Patricia THIEBAULT Denise CHETBOUN Gilles CLOU Lucienne
Une idée : Chaque nom est toujours en majuscules et les prénoms commencent par une majuscule sachant qu'un prénom composé est écrit avec un -
Jean-François par ex...
On peut donc supprimer la fin de chaque ligne :
HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André
HERBELIN Patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude
BARBARA DA CUNA Patricia THIEBAULT Denise CHETBOUN Gilles CLOU Lucienne
Une idée : Chaque nom est toujours en majuscules et les prénoms commencent par une majuscule sachant qu'un prénom composé est écrit avec un -
Jean-François par ex...
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Je peux proposer ça... à légèrement adapter certainement, mais c'est l'idée
Mais si ça vient d'une table, tu devrais pouvoir mettre en forme à l'extraction en principe...
A demander à jchd
#Include <Array.au3>
$txt = "HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André" & @crlf & _
"HERBELIN Patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude" & @crlf & _
"BARBARA DA CUNA Patricia THIEBAULT Jean-François CHETBOUN Gilles CLOU Lucienne"
$res = StringRegExp($txt, "((?:[A-Z']{2,}\h)+(?:[A-Z][a-zçéè]+-?)+)", 3)
_ArrayDisplay($res)
$txt = "HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André" & @crlf & _
"HERBELIN Patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude" & @crlf & _
"BARBARA DA CUNA Patricia THIEBAULT Jean-François CHETBOUN Gilles CLOU Lucienne"
$res = StringRegExp($txt, "((?:[A-Z']{2,}\h)+(?:[A-Z][a-zçéè]+-?)+)", 3)
_ArrayDisplay($res)
A demander à jchd
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Merci mais cela vient d'un fichier.
Je passe en résolu.
Je passe en résolu.
Re: [..] Extraction Nom Prénom
Autre solution :
(*UCP)(\b[[:upper:]']+(?:[- ][[:upper:]']+)*\b [[:upper:]][[:lower:]]+(?:-[[:upper:]][[:lower:]]+)*)
(*UCP)(\b[[:upper:]']+(?:[- ][[:upper:]']+)*\b [[:upper:]][[:lower:]]+(?:-[[:upper:]][[:lower:]]+)*)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Salut le revenant
Mais je préfère encore ma solution (plus simple)
(*UCP)((?:[A-Z'-]+\h)+(?:[A-Z][[:lower:]-]+)+)
Mais je préfère encore ma solution (plus simple)
(*UCP)((?:[A-Z'-]+\h)+(?:[A-Z][[:lower:]-]+)+)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Extraction Nom Prénom
Hé oui, je reviens de temps en temps
J'aimais pas trop le fait qu'on puisse tolérer un nom qui se termine par un tiret ou un nom prénom par une apostrophe
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Bonsoir
Je n'avais pas vu vos réponses mais si je mets ceci :
$res = StringRegExp($txt, " (*UCP)((?:[A-Z'-]+\h)+(?:[A-Z][[:lower:]-]+)+)", 3)
Pas de résultat ?
Je n'avais pas vu vos réponses mais si je mets ceci :
$res = StringRegExp($txt, " (*UCP)((?:[A-Z'-]+\h)+(?:[A-Z][[:lower:]-]+)+)", 3)
Pas de résultat ?
- walkson
- Modérateur
- Messages : 1035
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Bonjour
Code : Tout sélectionner
#Include <Array.au3>
$txt = "HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André" & @crlf & _
"HERBELIN Patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude" & @crlf & _
"BARBARA DA CUNA Patricia THIEBAULT Jean-François CHETBOUN Gilles CLOU Lucienne"
$res = StringRegExp($txt, " (*UCP)((?:[A-Z'-]+\h)+(?:[A-Z][[:lower:]-]+)+)", 3);espace devant (*UCP) <====== !!!
$res = StringRegExp($txt, "(*UCP)((?:[A-Z'-]+\h)+(?:[A-Z][[:lower:]-]+)+)", 3)
_ArrayDisplay($res)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
OK Merci
Avec ces 2 lignes, le fonctionnement est meilleur...
Avec ces 2 lignes, le fonctionnement est meilleur...
- walkson
- Modérateur
- Messages : 1035
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Bonjour,
Il y a erreur ci-dessous
et la bonne solution est
En regex l'espace a une signification et le code le prends en compte d'où l'erreur
Je crois que je me suis mal fait comprendre ou que j'ai mal expliqué
Il y a erreur ci-dessous
$res = StringRegExp($txt, " (*UCP)((?:[A-Z'-]+\h)+(?:[A-Z][[:lower:]-]+)+)", 3);espace devant (*UCP) <====== !!!
et la bonne solution est
$res = StringRegExp($txt, "(*UCP)((?:[A-Z'-]+\h)+(?:[A-Z][[:lower:]-]+)+)", 3)
En regex l'espace a une signification et le code le prends en compte d'où l'erreur
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Surtout que ça fonctionne même avec le texte du 1er post
#Include <Array.au3>
$txt = "HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André Normandie 17 2T 1T 4P 3T" & @crlf & _
"HERBELIN Patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude Anjou 22 2T 2K 3T 3T" & @crlf & _
"BARBARA DA-CUNA Patricia THIEBAULT Jean-François CHETBOUN Gilles CLOU Lucienne Ile de France 22 2K 2C 4C 4K"
$res = StringRegExp($txt, "(*UCP)((?:[A-Z'-]+\h)+(?:[A-Z][[:lower:]-]+)+)", 3)
_ArrayDisplay($res)
$txt = "HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André Normandie 17 2T 1T 4P 3T" & @crlf & _
"HERBELIN Patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude Anjou 22 2T 2K 3T 3T" & @crlf & _
"BARBARA DA-CUNA Patricia THIEBAULT Jean-François CHETBOUN Gilles CLOU Lucienne Ile de France 22 2K 2C 4C 4K"
$res = StringRegExp($txt, "(*UCP)((?:[A-Z'-]+\h)+(?:[A-Z][[:lower:]-]+)+)", 3)
_ArrayDisplay($res)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Bonjour
Effectivement, cela va m'éviter de faire l'opération d'enlever la fin de ligne.
Merci à vous 2.
Effectivement, cela va m'éviter de faire l'opération d'enlever la fin de ligne.
Merci à vous 2.
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Encore une question
Imaginons qu'un prénom soit défectueux sur la seconde ligne :
Pourquoi le test si @error ne me renvoie rien ?
Imaginons qu'un prénom soit défectueux sur la seconde ligne :
Code : Tout sélectionner
#Include <Array.au3>
Dim $txt[3] = ["HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André Normandie 17 2T 1T 4P 3T", _
"HERBELIN patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude Anjou 22 2T 2K 3T 3T", _
"BARBARA DA-CUNA Patricia THIEBAULT Jean-François CHETBOUN Gilles CLOU Lucienne Ile de France 22 2K 2C 4C 4K"]
For $i = 0 to 2
$res = StringRegExp($txt[$i], "(*UCP)((?:[A-Z'-]+\h)+(?:[A-Z][[:lower:]-]+)+)", 3)
If @error > 0 then MsgBox(0,"",$i)
if ubound($res) <> 4 then _arrayDisplay($res,$i)
Next
Modifié en dernier par walkson le lun. 08 août 2022 21:51, modifié 1 fois.
Raison : balises
Raison : balises
- walkson
- Modérateur
- Messages : 1035
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Bonjour,
Pour avoir une erreur il faut que tous les prénoms de la seconde ligne ne possèdent pas de majuscules et donc pas de résultat
Parce que il n'y a pas d'erreursPourquoi le test si @error ne me renvoie rien ?
Pour avoir une erreur il faut que tous les prénoms de la seconde ligne ne possèdent pas de majuscules et donc pas de résultat
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
En effet... pour retourner une erreur, il faut qu'aucun prénom de la chaîne entrée n'ait de majuscule. Dans ce cas et seulement dans ce cas, @error = 1 (aucune correspondance trouvée, 0 résultat, donc pas de tableau retourné) car on a demandé le mode 3 ($STR_REGEXPARRAYGLOBALMATCH)
C'est pourquoi (comme d'habitude avec les regex) il faut absolument anticiper ce genre de possibilité et construire le pattern en conséquence, car le risque est justement que le regex fonctionne bien mais retourne un tableau incomplet en omettant ce qui ne correspond pas strictement à la définition des données à extraire (le pattern)
Dans le cas présent :
Sinon, le seul moyen de détecter cette "erreur" est de connaître le nombre de couples nom-prénom de la liste et de le comparer avec le nombre de lignes du tableau final - pas folichon
C'est pourquoi (comme d'habitude avec les regex) il faut absolument anticiper ce genre de possibilité et construire le pattern en conséquence, car le risque est justement que le regex fonctionne bien mais retourne un tableau incomplet en omettant ce qui ne correspond pas strictement à la définition des données à extraire (le pattern)
Dans le cas présent :
#Include <Array.au3>
$txt = "HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André Normandie 17 2T 1T 4P 3T" & @crlf & _
"HERBELIN patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude Anjou 22 2T 2K 3T 3T" & @crlf & _
"BARBARA DA-CUNA Patricia THIEBAULT Jean-François CHETBOUN Gilles CLOU Lucienne Ile de France 22 2K 2C 4C 4K"
$res = StringRegExp($txt, "(*UCP)((?:[A-Z'-]+\h)+(?:[[:alpha:]-]+)+)", 3)
_ArrayDisplay($res)
$txt = "HANGARD Thérèse HANGARD Alain CHAPELLE Muriellle LEPRINCE André Normandie 17 2T 1T 4P 3T" & @crlf & _
"HERBELIN patrick BARRET Didier TILLETTE D'ACHEUX Jacquie ATANNE Claude Anjou 22 2T 2K 3T 3T" & @crlf & _
"BARBARA DA-CUNA Patricia THIEBAULT Jean-François CHETBOUN Gilles CLOU Lucienne Ile de France 22 2K 2C 4C 4K"
$res = StringRegExp($txt, "(*UCP)((?:[A-Z'-]+\h)+(?:[[:alpha:]-]+)+)", 3)
_ArrayDisplay($res)
Sinon, le seul moyen de détecter cette "erreur" est de connaître le nombre de couples nom-prénom de la liste et de le comparer avec le nombre de lignes du tableau final - pas folichon
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Yle
- Niveau 5
- Messages : 167
- Enregistré le : mar. 21 avr. 2009 17:22
- Localisation : La NORMANDIE -76
- Status : Hors ligne
Re: [..] Extraction Nom Prénom
Merci pour toutes ces explications.