Supprimer les balises de XML avec python 2.7.

Fermé
PythonXML - 27 avril 2018 à 19:04
 critou - 27 avril 2018 à 22:32
Bonjour,

Je voudrais vous demander d'aide.
J'ai un fichier xml contenant les balises avec du texte. ex.:

<pronounce desc="Dis">
euh
</pronounce>il me faut un
<lexical desc="nom de carte">
marteaux du courroux
</lexical>là une
<lexical desc="nom de carte">
consécration
</lexical>aller s'il vous plaît
<pronounce desc="Ponc">
<lexical desc="nom de carte">
seigneur de la reine
</lexical>

Je cherche à supprimer les balises en xml avec son contenu et avec python 2.7.
<pronounce desc="Dis">
euh
</pronounce>

Je n'arrive pas à supprimer seulement le contenu de balise pronounce desc="Dis", cela me supprime également pronounce desc="Ponc"

Il y a t-il qq'un qui aurait une idée comme je pourrais gérer ceci?

je vous remercie
A voir également:

1 réponse

Bonsoir.

Pourquoi ne pas utiliser une bibliothèque servant à manipuler le xml ? Si toutefois ton xml est correctement formaté.
Comme etree https://docs.python.org/2.7/library/xml.etree.elementtree.html

Sinon, avec re, cela se fait facilement, mais on peut s'en passer en jouant avec les index des tags à rechercher.

# -*-coding: utf-8 -*

xml = '''<pronounce desc="Dis">
euh
</pronounce>il me faut un
<lexical desc="nom de carte">
marteaux du courroux
</lexical>là une
<lexical desc="nom de carte">
consécration
</lexical>aller s'il vous plaît
<pronounce desc="Ponc">
<lexical desc="nom de carte">
seigneur de la reine
</lexical>'''

tags = ('<pronounce desc="Dis">', '</pronounce>')
start = xml.find(tags[0])
end = xml.find(tags[1]) + len(tags[1])
print xml[:start] + xml[end:]

import re
xml2 = re.sub('<pronounce desc="Dis">[^<]+</pronounce>', '', xml)
print xml2
0