Supprimer les balises de XML avec python 2.7.

PythonXML -  
 critou -
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

1 réponse

  1. critou
     
    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