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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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.
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.
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).
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).
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).