Extraire une chaine à 10 positions de la fin
Champosoleil
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
jee pee Messages postés 41562 Date d'inscription Statut Modérateur Dernière intervention -
jee pee Messages postés 41562 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je dois traiter un fichier csv avec séparateurs ; (point virgule) contenant des personnes et leurs nombreux attributs dont l'adresse.
J'ai besoin d'attributs en début de ligne, pas de problème...
et d'attributs vers la fin de ligne (disons à 10 positions de la fin de ligne)
le problème c'est qu'entre les deux j'ai les adresses, et que dans certaines adresses il y a des ; (point virgule) ce qui fausse tout.
Donc je me disait qu'avec notepad++ ou autre on peut eut être filtrer les champs en partant de la fin de ligne sans tenir compte du début de ligne pour "sauter" les champs vérolés d'adresses dont je n'ai nul besoin.
Merci d'avance si vous avez une astuce
je dois traiter un fichier csv avec séparateurs ; (point virgule) contenant des personnes et leurs nombreux attributs dont l'adresse.
J'ai besoin d'attributs en début de ligne, pas de problème...
et d'attributs vers la fin de ligne (disons à 10 positions de la fin de ligne)
le problème c'est qu'entre les deux j'ai les adresses, et que dans certaines adresses il y a des ; (point virgule) ce qui fausse tout.
Donc je me disait qu'avec notepad++ ou autre on peut eut être filtrer les champs en partant de la fin de ligne sans tenir compte du début de ligne pour "sauter" les champs vérolés d'adresses dont je n'ai nul besoin.
Merci d'avance si vous avez une astuce
A voir également:
- Extraire une chaine à 10 positions de la fin
- Extraire une video youtube - Guide
- Extraire le son d'une vidéo - Guide
- Clé de produit windows 10 gratuit - Guide
- Positions google - Guide
- Restauration systeme windows 10 - Guide
2 réponses
Bonjour,
Tu devrais nous fournir un fichier d’exemple, anonymisé.
Normalement un fichier .csv où un champ contient un ; devrait être encadré par des guillemets, et ainsi le ; n'est pas pris en compte comme séparateur :
AAA;BBB;"CCC;CCC";DDD ne doit donner que 4 champs dans excel.
Pour notepad++ et ne conserver que les n derniers champs, il faudrait chercher du coté des expressions régulières, et procéder en 2 étapes
ajouter une chaine improbable devant les n derniers :remplacer
Tu devrais nous fournir un fichier d’exemple, anonymisé.
Normalement un fichier .csv où un champ contient un ; devrait être encadré par des guillemets, et ainsi le ; n'est pas pris en compte comme séparateur :
AAA;BBB;"CCC;CCC";DDD ne doit donner que 4 champs dans excel.
Pour notepad++ et ne conserver que les n derniers champs, il faudrait chercher du coté des expressions régulières, et procéder en 2 étapes
ajouter une chaine improbable devant les n derniers :remplacer
(;.*;.*;.*)$par
XYZXYZ\1puis remplacer
^.*XYZXYZpar rien .
C'est presque ça merci beaucoup.
Malheureusement le csv n'a pas de délimiteur de texte, ça aurait été si simple...
Exemple de ligne :
;Vert;01/01/2021;;;;;50812345100020;;;;;0;0;Madame;TRUCMUCHE;;Machine;10/10/1910;10/10/1920;0607080910;;;Madame Machine Trumcuche;;;Rue des pigeons ; des canaries;et des pinsons;Lieu dit des oiseaux;75008;PARIS;75001;0607080910;;;;;;;;;;zone que je veux capter;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dans cet exemple le champ adresse-rue contient "Rue des pigeons ; des canaries;et des pinsons"
le problème est que l'expression (;.*;.*;.*)$ ne prend pas que les 3 derniers ; mais toute la ligne (quasiment)
Malheureusement le csv n'a pas de délimiteur de texte, ça aurait été si simple...
Exemple de ligne :
;Vert;01/01/2021;;;;;50812345100020;;;;;0;0;Madame;TRUCMUCHE;;Machine;10/10/1910;10/10/1920;0607080910;;;Madame Machine Trumcuche;;;Rue des pigeons ; des canaries;et des pinsons;Lieu dit des oiseaux;75008;PARIS;75001;0607080910;;;;;;;;;;zone que je veux capter;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dans cet exemple le champ adresse-rue contient "Rue des pigeons ; des canaries;et des pinsons"
le problème est que l'expression (;.*;.*;.*)$ ne prend pas que les 3 derniers ; mais toute la ligne (quasiment)
oui, l'expression régulière commence par la gauche :-/ il n'y a pas de traitement par la fin.
si c'est un fichier que tu traites une seule fois, moi je ferais cela dans excel en copiant les colonnes dans une autre feuille des colonnes 1 à 26 dans l'ordre (jusqu'à l'adresse) puis en copiant les cellules avec des formules en partant de la dernière colonne d'une ligne.
et si c'est un traitement régulier, un petit programme python pour transformer le contenu du fichier en traitant en boucle lignes, puis chaque caractère.
si c'est un fichier que tu traites une seule fois, moi je ferais cela dans excel en copiant les colonnes dans une autre feuille des colonnes 1 à 26 dans l'ordre (jusqu'à l'adresse) puis en copiant les cellules avec des formules en partant de la dernière colonne d'une ligne.
et si c'est un traitement régulier, un petit programme python pour transformer le contenu du fichier en traitant en boucle lignes, puis chaque caractère.