#1 Fri 11 January 2013 16:30
- mstcx
- Participant actif
- Lieu: Nîmes
- Date d'inscription: 21 Feb 2008
- Messages: 87
Comment récupérer les chiffres et le texte séparément ?
Bonjour,
A partir d'un champ mélangeant des caractères de texte et de chiffres je souhaite récupérer 2 champs, l'un contenant les chiffres et l'autre le texte.
Exemple :
j'ai un
champ_1
235-A
1-D
35-AB
je voudrai avoir :
un champ_1-txt et un champ_1-num
A 235
D 1
AB 35
Est-ce possible avec un transformer FME, sans passer par PythonCreator ?
Merci,
Marc
Hors ligne
#2 Fri 11 January 2013 17:13
Re: Comment récupérer les chiffres et le texte séparément ?
Utilisez AttributeSplitter avec le délimiteur "-"
Hors ligne
#3 Mon 14 January 2013 16:56
- mstcx
- Participant actif
- Lieu: Nîmes
- Date d'inscription: 21 Feb 2008
- Messages: 87
Re: Comment récupérer les chiffres et le texte séparément ?
Merci pour votre réponse.
Je n'arrive pas à récupérer les lettres. J'éclate l'attribut List{} en List{1} et List{2}. Seul List{1} est complété par les chiffres
champ_1
235-A
1-D
35-AB
donne :
List{1}
235
1
35
et List{2} est vide.
Peut on extraire séparément les lettres et les nombres dans une chaîne alphanumérique à l'aide d'un transformer ? (mon champ ne contenant pas toujours de "-").
J'ai trouvé un bout de script Python, mais je ne sais pas comment l'insérer à mon projet.
re.sub('[^a-zA-Z]','','tr7uc85')
renvoie
'truc'
et
re.sub('[^0-9]','','tr7uc85')
renvoie
'785'
Merci
Hors ligne
#4 Mon 14 January 2013 17:03
- pierreb
- Participant actif
- Lieu: La Rochelle
- Date d'inscription: 3 Oct 2011
- Messages: 73
Re: Comment récupérer les chiffres et le texte séparément ?
Et en copiant l'attribut puis en passant sur l'un un string replacer qui supprime les lettres et sur l'autre un string replacer qui supprime les chiffres ?
[a-z] d'un coté, [0-9] de l'autre.
+ une suppresion des caractères spéciaux (les tirets, ce genre de chose).
Hors ligne
#5 Mon 14 January 2013 17:18
Re: Comment récupérer les chiffres et le texte séparément ?
S'il n'y a pas toujours de caractère délimiteur, il faut utiliser une expression régulière avec StringSearcher, puis gérer la liste qui en découle.
Par exemple :
pour 235-A
l'expression :
([0-9]*)(-[a-z]*)
permet de distinguer :
Attribute(encoded: utf-8): `_matched_parts{0}' has value `235'
Attribute(encoded: utf-8): `_matched_parts{1}' has value `-A'
Vous avez intérêt de supprimer tous les caractères délimiteurs avant le StringSearcher pour simplifier l'expression régulière.
Hors ligne
#6 Tue 15 January 2013 07:10
Re: Comment récupérer les chiffres et le texte séparément ?
Attention les listes commencent à 0
Dernière modification par heretik25 (Tue 15 January 2013 07:10)
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#7 Tue 15 January 2013 10:30
- mstcx
- Participant actif
- Lieu: Nîmes
- Date d'inscription: 21 Feb 2008
- Messages: 87
Re: Comment récupérer les chiffres et le texte séparément ?
Merci pour votre aide... et pour cette précision :
Attention les listes commencent à 0
Marc
Hors ligne
#8 Tue 15 January 2013 15:14
Re: Comment récupérer les chiffres et le texte séparément ?
Pas de souci
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne