Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/07/2021, à 09:45

migrec

Traitement d'un fichier texte sur plusieurs lignes

Bonjour,

J'ai un fichier texte contenant des données dont j'aimerai récupérer le contenu sous forme de tableau (csv ira très bien).
Le fichier initial est de la forme (en simplifiant) :

blabla
encoredublabla
toujoursdublabla
Personne1
BlablaConcernantCettePersonne
Item1 : DonnéeItem1Personne1
Item2 : DonnéeItem2Personne1
BlablaGlobal
Personne2
BlablaConcernantCettePersonne
Item1 : DonnéeItem1Personne2
Item2 : DonnéeItem2Personne2
BlablaGlobal

Je voudrai avoir

Nom;Item1;Item2;Item3
Personne1;DonnéeItem1Personne1;DonnéeItem2Personne1;;
Personne2;DonnéeItem1Personne2;DonnéeItem2Personne2;;

Avec sed et awk, je me débrouille pour gérer les données en ligne mais quelle est la meilleure solution pour un fichier dont les données sont réparties sur plusieurs lignes ?

Hors ligne

#2 Le 25/07/2021, à 10:06

Watael

Re : Traitement d'un fichier texte sur plusieurs lignes

salut,

d'où viennent ces données non structurées (ou si peu) ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 25/07/2021, à 10:10

diesel

Re : Traitement d'un fichier texte sur plusieurs lignes

Watael a écrit :

salut,

d'où viennent ces données non structurées (ou si peu) ?

T'es d'la police ? big_smile big_smile big_smile

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#4 Le 25/07/2021, à 10:14

migrec

Re : Traitement d'un fichier texte sur plusieurs lignes

Les données viennent d'un fichier PDF qui m'affiche le récapitulatif des données avec une personne par page.
Et je cherche à constituer un tableau global pour y effectuer quelques calculs.

Hors ligne

#5 Le 25/07/2021, à 10:15

migrec

Re : Traitement d'un fichier texte sur plusieurs lignes

Avec une macro LibreOffice, ça devrait le faire mais ça fait longtemps que j'ai pas mis les mains dedans.

Hors ligne

#6 Le 25/07/2021, à 10:17

Watael

Re : Traitement d'un fichier texte sur plusieurs lignes

diesel a écrit :

T'es d'la police ?

oui. je suis sérif.

la question est plutôt "comment ont été acquises* ces données ?"

--
* non, je ne suis pas inspecteur des impôts. lol


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 25/07/2021, à 10:21

Watael

Re : Traitement d'un fichier texte sur plusieurs lignes

migrec a écrit :

'un fichier PDF qui m'affiche le récapitulatif des données avec une personne par page.

est-ce que ce ne serait pas plus simple de splitter le fichier en fichiers d'une page ?
l'idéal serait d'avoir chaque page dans un format balisé (avec pdftohtml), pour pouvoir se repérer...


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#8 Le 25/07/2021, à 14:54

serge-martial-1956//

Re : Traitement d'un fichier texte sur plusieurs lignes

Bonjour tout le monde.
Perso je ne sais pas encore vraiment bien si je dois interrompre les discutions auxquelles je ne comprends pas grand chose. Beaucoup de mots. Tous ces mots . . . Je les retrouve dans man ? J'ai tenté de m'inscrire sur un dictionnaire informatique ; mais il me demande d'accepter les cookies, je me rappelle plus du nom, je vais revoir ça avec méfiance. Si vous pouvez dire quelque chose de positif. Merci.

Hors ligne

#9 Le 25/07/2021, à 15:38

Watael

Re : Traitement d'un fichier texte sur plusieurs lignes

[dois-je] interrompre les discutions auxquelles je ne comprends pas grand chose

non. surtout pas pour demander si tu peux.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 25/07/2021, à 20:04

pingouinux

Re : Traitement d'un fichier texte sur plusieurs lignes

Bonsoir,

migrec #1 a écrit :

Avec sed et awk, je me débrouille pour gérer les données en ligne mais quelle est la meilleure solution pour un fichier dont les données sont réparties sur plusieurs lignes ?

Tu peux utiliser python, qui est bien adapté pour ça.
En supposant que j'aie bien compris la structure du fichier de données :

$ cat script_python.py 
#!/usr/bin/env python3
import sys, re

rec=re.compile('(.*\n)*?(.*\n)(.*\n)(Item1 : .*\n)(Item2 : .*\n)?(Item3 : .*\n)?')
with open(sys.argv[1],'r') as f : lst=rec.findall(f.read())

print("Nom;Item1;Item2;Item3")
for k in lst: print("%s;%s;%s;%s;"%(k[1][:-1],k[3][8:-1],k[4][8:-1],k[5][8:-1]))

À appeler ainsi :

$ ./script_python.py ton_fichier 
Nom;Item1;Item2;Item3
Personne1;DonnéeItem1Personne1;DonnéeItem2Personne1;;
Personne2;DonnéeItem1Personne2;DonnéeItem2Personne2;;

Si ça ne marche pas pour certains fichiers, il faut que tu en précises la structure.

Édité : Simplification

Dernière modification par pingouinux (Le 26/07/2021, à 09:50)

Hors ligne

#11 Le 26/07/2021, à 15:48

migrec

Re : Traitement d'un fichier texte sur plusieurs lignes

Merci pour ce script qui aura au moins l'avantage de me mettre le pied à l'étrier concernant python, que je ne connais quasiment pas !

Hors ligne