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é ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Fri 08 March 2019 12:14

GlaDal
Participant assidu
Date d'inscription: 30 Aug 2013
Messages: 987

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: 987

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: 987

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: 987

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

dominique.lys a écrit:

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

 

Pied de page des forums

Powered by FluxBB