Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

transformer un texte en python

2 réponses
Avatar
max
Tout nouveau dans le monde python, je voudrais savoir comment (la meilleure
façon de) traiter un fichier texte pour le transformer en XML.


Le fichier texte se présente sous cette forme:

nom:nom élément
propriété:texte sans saut de ligne (plusieurs fois)
mots-clés:liste de textes sans saut de ligne séparés par virgule
description:texte avec sauts de ligne
nom:nom élément
propriété:texte sans saut de ligne (plusieurs fois)
mots-clés:liste de textes sans saut de ligne séparés par virgule
description:texte avec sauts de ligne
nom:nom élément
propriété:texte sans saut de ligne (plusieurs fois)
mots-clés:liste de textes sans saut de ligne séparés par virgule
description:texte avec sauts de ligne


Je voudrais le transformer en:

<element>
<nom>nom élément</nom>
<propriété>texte sans saut de ligne</propriété> (plusieurs fois)
<mots-clés>
<mot-clé>texte sans saut de ligne</mots-clés>(plusieurs fois)
</mots-clés>
<description>texte avec sauts de ligne<description>
</element>
<element>
<nom>nom élément</nom>
<propriété>texte sans saut de ligne</propriété> (plusieurs fois)
<mots-clés>
<mot-clé>texte sans saut de ligne</mots-clés>(plusieurs fois)
</mots-clés>
<description>texte avec sauts de ligne<description>
</element>
<element>
<nom>nom élément</nom>
<propriété>texte sans saut de ligne</propriété> (plusieurs fois)
<mots-clés>
<mot-clé>texte sans saut de ligne</mots-clés>(plusieurs fois)
</mots-clés>
<description>texte avec sauts de ligne<description>
</element>


Les fichiers comportent des milliers d'enregistrements, ils faut donc les
écrire la sortie au fur et à mesure qu'ils sont lus.

Merci pour votre aide! :-)

2 réponses

Avatar
Eric Deveaud
max wrote:
Tout nouveau dans le monde python, je voudrais savoir comment (la meilleure
façon de) traiter un fichier texte pour le transformer en XML.


Le fichier texte se présente sous cette forme:

nom:nom élément
propriété:texte sans saut de ligne (plusieurs fois)
mots-clés:liste de textes sans saut de ligne séparés par virgule
description:texte avec sauts de ligne



Je voudrais le transformer en:

<element>
<nom>nom élément</nom>
<propriété>texte sans saut de ligne</propriété> (plusieurs fois)
<mots-clés>
<mot-clé>texte sans saut de ligne</mots-clés>(plusieurs fois)
</mots-clés>
<description>texte avec sauts de ligne<description>
</element>


ecrire un parser pour le bouzin


lire le fichier ligne a ligne

paratant de l'observation qu'un enregistrment commence par une ligne
commencant par "nom:"
et que l'enregsitrment est fini de lire quand on rencontre a nouveau une
ligne commencant par "nom:"
je proposerai la solution brute de decofrage suivante
qui devra surement etre ameliorée

enregistrement <- dico vide
si nom: est trouve en debut de ligne
si enregistrement n'est pas vide
cracher le xml a partir du dico
enregistrement <- dico vide
spliter la ligne sur :
V <- recuperer ce qui va bien ie: nom element
enregistrement[nom] <- V
continuer a lire
si propriété: est trouve en debut de ligne
splitter la ligne sur :
V <- recuperer ce qui va bien
enregistrement[proprietes] <- enregistrement[proprietes] + V
on fait la premiere insertion pour la clef proprietes)
continuer a lire
si mots-clés: est trouve en debut de ligne
splitter la ligne sur :
splitter ce qui va bien sur ,
V <- recuperer ce qui va bien
enregistrement[mots-clés] <- V
continuer a lire
si description: est trouve en debut de ligne
splitter la ligne sur :
V <- recuperer ce qui va bien
enregistrement[description] <- V
continuer a lire
sinon: (une ligne qui ne commence par rien de connu)
enregistrement[description] <- enregistrement[description] + ligne

l'idée générale est la, reste a paufiner un peu les détails

1) insertion pour les clefs proprietes, dans le cas ou c'est la premiere, tel
quel on va essayer de reuperer une valeur qui n'existe pas)

2) que faire a la fin du fichier, attention a ne pas perdre la/ les dernieres
lignes ou pire le dernier enregistrement

3) verification de la coherence des données, que se passe-t il si un/des champs
manquent.

4) ecriture de l'ecrivain XML a partir du dico

5) d'autres choses qui ne me sautent pas aux yeux a cet heure ci.... ;-)

Eric

PS l'etape suivant eserait de faire un scanner et un consumer.

Avatar
max
Eric Deveaud a écrit:

l'idée générale est la, reste a paufiner un peu les détails


Merci pour cette aide précieuse. :-)

Le but est de transformer des listes de pakages rpm, deb,... en XML.
J'ai pensé que python serait le meilleur moyen pour ça (et le traitement
inverse vers une base).