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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Si vous lisez ce message, cela signifie que vous etes sur le nouveau serveur de GeoRezo.

Toutefois, suite à la migration, des anomalies voire des regressions existent qui seront corrigées progressivement.

Merci de votre patience.

#1 Fri 08 March 2019 12:14

GlaDal
Membre
Date d'inscription: 30 Aug 2013
Messages: 216

QGIS 3: Expression régulière pour séparer champ en plusieurs 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
Membre
Date d'inscription: 19 Mar 2009
Messages: 200

Re: QGIS 3: Expression régulière pour séparer champ en plusieurs 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
Membre
Date d'inscription: 30 Aug 2013
Messages: 216

Re: QGIS 3: Expression régulière pour séparer champ en plusieurs 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
Membre
Date d'inscription: 5 Oct 2006
Messages: 367
Site web

Re: QGIS 3: Expression régulière pour séparer champ en plusieurs 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
Membre
Date d'inscription: 30 Aug 2013
Messages: 216

Re: QGIS 3: Expression régulière pour séparer champ en plusieurs 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
Membre
Date d'inscription: 30 Aug 2013
Messages: 216

Re: QGIS 3: Expression régulière pour séparer champ en plusieurs champs

Dominique : merci !
Ca marche.

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |