Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Tue 20 April 2021 10:33

GOLDOSAM
Participant actif
Date d'inscription: 7 Jul 2017
Messages: 54

Aide pour séparer chiffre et lettre.

Bonjour,

Pourriez-vous me dire comment je peux avec un transformer ou fonction séparer un nombre et lettre dans FME et récupérer ces valeurs pour en faire deux attributs ?

Exemple :

15bis -> 15 et bis

Merci à vous,

Hors ligne

 

#2 Tue 20 April 2021 17:46

Benoit D
Participant actif
Date d'inscription: 17 Jul 2018
Messages: 137

Re: Aide pour séparer chiffre et lettre.

Bonjour,
Le transformer StringSearcher avec comme expression (\d*)(\w*) (les chiffres d'abord, puis les lettres).
Vous pouvez laisser à vide MatchedResutAttribute et dans advanced, rentrez le nom de la liste qui contiendra les éléments, par exemple _elem
Dans votre résultat 15 sera dans _elem{0}.part et bis sera dans _elem{1}.part

Hors ligne

 

#3 Wed 21 April 2021 09:56

GOLDOSAM
Participant actif
Date d'inscription: 7 Jul 2017
Messages: 54

Re: Aide pour séparer chiffre et lettre.

Bonjour,

Merci de votre réponse.

Effectivement les expressions régulières sont très intéressantes à utiliser, je découvre.

J'ai ça à la place \d*|\w* , est-ce-que cela vous semble correct ?

Bien à vous,




Benoit D a écrit:

Bonjour,
Le transformer StringSearcher avec comme expression (\d*)(\w*) (les chiffres d'abord, puis les lettres).
Vous pouvez laisser à vide MatchedResutAttribute et dans advanced, rentrez le nom de la liste qui contiendra les éléments, par exemple _elem
Dans votre résultat 15 sera dans _elem{0}.part et bis sera dans _elem{1}.part

Hors ligne

 

#4 Wed 21 April 2021 11:40

GOLDOSAM
Participant actif
Date d'inscription: 7 Jul 2017
Messages: 54

Re: Aide pour séparer chiffre et lettre.

Re,

Excusez-moi je suis novice avec FME et je l'utilise surtout pour de la base de données non spatiale.

Comment je fais pour récupérer ou éclater les éléments ?

J'utilise un ListExploder derrière ?

Merci à vous,



Benoit D a écrit:

Bonjour,
Le transformer StringSearcher avec comme expression (\d*)(\w*) (les chiffres d'abord, puis les lettres).
Vous pouvez laisser à vide MatchedResutAttribute et dans advanced, rentrez le nom de la liste qui contiendra les éléments, par exemple _elem
Dans votre résultat 15 sera dans _elem{0}.part et bis sera dans _elem{1}.part

Hors ligne

 

#5 Thu 22 April 2021 09:21

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 383

Re: Aide pour séparer chiffre et lettre.

Bonjour,

Il est possible de récupérer les valeurs de la liste avec un simple AttributeCreator ou AttributeManager en y faisant référence, par exemple en créant un nouvel attribut et en lui affectant la valeur_elem{0}.part on récupère le premier élément.

Concernant l'expression à utiliser, si vous pouvez avoir une espace entre le nombre et l'indice de répétition, il vaut mieux le prévoir.
J'ai fait un workspace test avec des données générées aléatoirement, voir ci-joint.

J'ai utilisée l'expression

Code:

^(\d*) *(\w*)$

Décomposition :
^ = début de ligne
(\d*)
   parenthèses = groupe de capture
   \d = chiffre
   * = présent 0 ou plusieurs fois
*
   espace = caractère espace
   * = présent 0 ou plusieurs fois
(\w*)
   parenthèses = groupe de capture
   \w = caractère alphanumérique (0-9 ou a-z ou A-Z ou _)
   * = présent 0 ou plusieurs fois
$ = fin de ligne

A tester ici : https://regex101.com/r/zbSQrs/1

Et concernant le paramétrage du StringSearcher, pour récupérer les groupes et non les "match", il faut utiliser la deuxième liste des options avancées.
Voir dans le workspace joint.

Dernière modification par p.jeremie (Thu 22 April 2021 09:22)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#6 Thu 22 April 2021 10:09

GOLDOSAM
Participant actif
Date d'inscription: 7 Jul 2017
Messages: 54

Re: Aide pour séparer chiffre et lettre.

Bonjour,

Merci pour cette démonstration très intéressante qui me permet de mieux comprendre les expressions régulières et aussi une partie de fonctionnement de FME.

Effectivement c'est très ludique et explicite.

Autre question si je peux me permettre,

J'ai ce genre de donnée à préparer ainsi :

Départ de la donnée -> 10 A RUE DE TOTO ou 8 RUE DE TOTO

à la fin -> NUM_VOIRIE=10
               SEQ=A
               NOM_RUE=RUE DE TOTO

ou

à la fin -> NUM_VOIRIE=8
               NOM_RUE=RUE DE TOTO

Quelle approche auriez-vous pour bien séparer mes données ?

Merci à vous,

Hors ligne

 

#7 Thu 22 April 2021 11:18

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 383

Re: Aide pour séparer chiffre et lettre.

Je n'ai pas encore eu à traiter ce genre de cas mais c'est une problématique qui se présente régulièrement. La recherche dans le forum (hors spécifique FME) n'a rien donné ?

Peut-être d'autres personnes qui ont déjà traité ce cas auront une meilleure approche.
Pour ma part je commencerais par chercher ce qui se fait ailleurs.
Et je pense qu'un premier split en utilisant le mot clé de type de voie (RUE, AVENUE...) sera nécessaire pour isoler le numéro et indice de répétition. Mais il y a peut-être d'autres moyens...

Hors ligne

 

#8 Thu 22 April 2021 11:28

GOLDOSAM
Participant actif
Date d'inscription: 7 Jul 2017
Messages: 54

Re: Aide pour séparer chiffre et lettre.

Merci pour votre orientation, c'est vrai que de faire un splitter sur un mot je n'y avais pas pensé.

Merci à vous,

Bonne journée,

Hors ligne

 

#9 Thu 22 April 2021 20:43

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 383

Re: Aide pour séparer chiffre et lettre.

Expression à reprendre sur l'autre sujet que tu as créé, donnée par Cquest :

Code:

^([0-9]*) ?(.|BIS|TER|QUATER)? (.*)$

https://georezo.net/forum/viewtopic.php … 27#p342627

Ca devrait bien fonctionner dans FME.

Dernière modification par p.jeremie (Thu 22 April 2021 20:43)

Hors ligne

 

Pied de page des forums

Powered by FluxBB