Pages: 1
- Sujet précédent - QGIS 3: Expression reguliere pour separer champ en N champs - Sujet suivant
#1 Fri 08 March 2019 12:14
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1103
QGIS 3: Expression reguliere pour separer champ en N champs
Bonjour à tous,
Je reviens vers vous pour faire quelque chose que je pensais simple au départ et qui s'avère un peu plus difficile (pour moi).
J'aimerais pouvoir diviser un champ en plusieurs champs à l'aide d'un caractère permettant de délimiter les chaines de caractères. Plus simple avec un exemple :
En entrée :
Champ "A" : 456_REP_GRAN_01_PC
En sortie :
Champ "B" : 456
Champ "C" : REP
Champ "D" : GRAN
Champ "E" : 01
Champ "F" : PC
Et cerise sur le gâteau, j'aimerais pouvoir l'automatiser et donc placer ça dans mon modèle.
J'ai bien compris qu'il fallait utiliser une expression régulière et certainement python.
D'avance merci pour votre aide !
Hors ligne
#2 Fri 08 March 2019 14:49
- sylvain poupard
- Participant assidu
- Date d'inscription: 19 Mar 2009
- Messages: 362
Re: QGIS 3: Expression reguliere pour separer champ en N champs
Bonjour,
Si la structure est la même à chaque fois vous pouvez utiliser la fonction substr :
fonction substr
Renvoie une partie de chaîne de caractères.
Syntaxe
substr(input_string, startpos, length)
Arguments
input_string
la chaîne complète en entrée
startpos
un entier représentant la position à partir de laquelle l'extraction commence
length
un entier représentant le nombre de caractères à extraire
Exemples
substr('SALUT MONDE',3,5) → 'LUT M'
Pour l'automatiser je ne sais pas.
Bon courage
Hors ligne
#3 Fri 08 March 2019 15:32
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1103
Re: QGIS 3: Expression reguliere pour separer champ en N champs
Pardon, j'aurais du préciser que la longueur des chaines de caractère entre les '_' pouvait changer...
Hors ligne
#4 Fri 08 March 2019 15:56
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS 3: Expression reguliere pour separer champ en N champs
Si c'est pour intégrer dans un modèle vous pouvez enchainer le géotraitement "calculer un champs" pour chacun de vos 5 champs avec cette expression :
Code:
array_get( string_to_array( '456_REP_GRAN_01_PC', '_'), 0)
Faites varier l'index de la fonction array_get de 0 à 4 selon le champs à calculer
Hors ligne
#5 Fri 08 March 2019 17:22
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1103
Re: QGIS 3: Expression reguliere pour separer champ en N champs
Dominique et Sylvain merci pour vos réponses. Je ne connais pas cette fonction array (enfin, j'ai lu vite fait un ou deux trucs la dessus). Je teste et ça me donne l'occasion de me pencher dessus.
Hors ligne
#6 Thu 14 March 2019 12:37
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1103
Re: QGIS 3: Expression reguliere pour separer champ en N champs
Dominique : merci !
Ca marche.
Hors ligne
#7 Fri 03 January 2020 20:46
- Patrickblancseau
- Participant occasionnel
- Date d'inscription: 16 Jul 2019
- Messages: 45
Re: QGIS 3: Expression reguliere pour separer champ en N champs
Si c'est pour intégrer dans un modèle vous pouvez enchainer le géotraitement "calculer un champs" pour chacun de vos 5 champs avec cette expression :
Code:
array_get( string_to_array( '456_REP_GRAN_01_PC', '_'), 0)Faites varier l'index de la fonction array_get de 0 à 4 selon le champs à calculer
Bonjour, tous d abord meilleur voeux, mais je rebondis sur ce sujet et imaginer que l'on appelle 4 est il y en a que 3, sa genere une case vide ou une erreur quand on appelle la 4?
Cordialement
Hors ligne
#8 Sat 04 January 2020 17:41
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS 3: Expression reguliere pour separer champ en N champs
le mieux est encore d'essayer :
https://imgur.com/fLfp7S3
ça retourne une valeur nulle
Hors ligne
#9 Wed 13 May 2020 20:55
- Abby003
- Juste Inscrit !
- Date d'inscription: 11 May 2020
- Messages: 7
Re: QGIS 3: Expression reguliere pour separer champ en N champs
Bonjour à tous,
J'ai le même problème que GlaDal.
J'ai un champ avec des informations sur des propriétaires de type :
PBDF4O - M LAGAFE/VINCENT PIERRE MICHEL - Propriétaire
PFSD8Z - MME GARDIEN/JOSÉPHINE MARTINE - Propriétaire
PFSD8Z - MME LAGARDE/HENRIETTE - Usufruitier (associé avec N)|PDFRDQ - MME DE AGE/MARIE LOUISE - Nu-propriétaire (associé avec U)|PBDF4O - M DESSOUS/BRUNO - Propiétaire
Un second champ avec des informations sur l’adresse et naissance :
HDLTHR - 82 RUE DES BOULET 41510 TRIFOUILLY SUR MER
DLTJFN - BOULEVARD DES AIRES 59370 SOLEIL
PDJGNF - L ENFANT 41500 CHAUSETTES|PDHF9D- CHE DE LA VIOLETTE 12CH 1950 RIGOLO - Né(e) le 16/10/1770 à 76 PLEINPIED
FHEIFS- 10 RUE DES MINES 45900 COURGETTE- Né(e) le 29/10/1561 à 41 MENTON|MBNLVW - 14 RUE DES BOUETS 45000 NUS PIEDS- Né(e) le 27/05/1264 à 45 TOMATES
Je souhaiterais avoir :
Nom_1 :
M LAGAFE/VINCENT PIERRE MICHEL
MME GARDIEN/JOSÉPHINE MARTINE
MME LAGARDE/HENRIETTE
Type_1 :
Propriétaire
Propriétaire
Usufruitier
Adresse_1 :
82 RUE DES BOULET 41510 TRIFOUILLY SUR MER
BOULEVARD DES AIRES 59370 SOLEIL
L ENFANT 41500 CHAUSETTES
Naissance_1:
Nom_2 :
MME DE AGE/MARIE LOUISE
Type_2 :
Nu-propriétaire
Adresse_2 :
CHE DE LA VIOLETTE 12CH 1950 RIGOLO
Naissance_2:
Né(e) le 16/10/1770 à 76 PLEINPIED
J'ai essayer la fonction "array_get( string_to_array( 'PBDF4O - M LAGAFE/VINCENT PIERRE MICHEL - Propriétaire', ' - '), 1)" proposé par dominique.lys.
Cependant, dans toutes les lignes de la colonne apparait M LAGAFE/VINCENT PIERRE MICHEL.
Est-ce la fonction qui n'est pas adaptée à mon problème?
Que puis-je faire?
Je vous remercie par avance pour vos réponses.
Hors ligne
#10 Wed 13 May 2020 23:06
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS 3: Expression reguliere pour separer champ en N champs
Il faudrait remplacer 'PBDF4O - M LAGAFE/VINCENT PIERRE MICHEL - Propriétaire' par le nom du champ je crois. Et sans guillemets si il ne sont pas nécessaires pour utiliser un champ.
L'info devrait toujours être subdivisées en ses plus petites parties et consignées dans autant de champs. Ça évite ce genre de cauchemar.
Dernière modification par carteq (Wed 13 May 2020 23:12)
Hors ligne
#11 Thu 14 May 2020 21:59
- Abby003
- Juste Inscrit !
- Date d'inscription: 11 May 2020
- Messages: 7
Re: QGIS 3: Expression reguliere pour separer champ en N champs
Cela a fonctionné
Merci à vous
Hors ligne
#12 Fri 15 May 2020 06:35
- Abby003
- Juste Inscrit !
- Date d'inscription: 11 May 2020
- Messages: 7
Re: QGIS 3: Expression reguliere pour separer champ en N champs
En effet cela à fonctionné.
Je vous remercie
Hors ligne
Pages: 1
- Sujet précédent - QGIS 3: Expression reguliere pour separer champ en N champs - Sujet suivant