Enlever un caractère spéciaux dans un fichier xml en python
Résolu
rasielblas
Messages postés
143
Statut
Membre
-
rasielblas Messages postés 143 Statut Membre -
rasielblas Messages postés 143 Statut Membre -
Bonjour,
J'ai un fichier xml qui contient un caractère spéciaux que j'aimerais supprimer, j'ai trouvé comment détécter le caractère spéciaux mais je ne sais pas comment le supprimer et vous demande votre aide s'il vous plaît.
Voici mon code python:
Voici mon fichier xml:
J'aimerais donc comme résultat
Jacques@ devient Jacques
Paul@ devient Paul
Paul@ Edouard devient Paul Edouard
Cordialement,
J'ai un fichier xml qui contient un caractère spéciaux que j'aimerais supprimer, j'ai trouvé comment détécter le caractère spéciaux mais je ne sais pas comment le supprimer et vous demande votre aide s'il vous plaît.
Voici mon code python:
list_noeud_parent = ['Parent'] for noeudParent in list_noeud_parent: if self.root.find(noeudParent) is not None: for child in self.root.findall(noeudParent): tagSubElement = ["enfant1","enfant2"] for tag in tagSubElement: if child.find(tag) is not None: if '@' in child.find(tag).text: print("Caractere speciaux trouvé: {}".format(child.find(tag).text))
Voici mon fichier xml:
<?xml version='1.0' encoding='iso-8859-1'?> <Data> <Parent> <enfant1>Jacques@</enfant2> <enfant2>Paul@</enfant2> <enfant3>Paul@ Edouard</enfant2> </Parent> </Data>
J'aimerais donc comme résultat
Jacques@ devient Jacques
Paul@ devient Paul
Paul@ Edouard devient Paul Edouard
Cordialement,
A voir également:
- Xml caractères spéciaux
- Caractère spéciaux - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Xml download - Télécharger - Édition & Programmation
- Caractères ascii - Guide
2 réponses
Bonjour,
Supprimer un caractère d'une fin de chaine se fait avec str.rstrip
Il reste plus qu'à changer le texte du node xml et d'enregistrer ton fichier modifications faites.
Supprimer un caractère d'une fin de chaine se fait avec str.rstrip
>>> 'Jacques@'.rstrip('@') 'Jacques'
Il reste plus qu'à changer le texte du node xml et d'enregistrer ton fichier modifications faites.
Bonjour,
En effet, j'avais mal lu, je n'avais pas vu que le @ pouvait être dans le milieu de la chaine, alors str.replace est plus que suffisant pour peu que tous les @ de la chaine doivent être supprimés (s'il y a dans le tas des adresses mails, il faudra utiliser re.sub avec le motif qui va bien).
En effet, j'avais mal lu, je n'avais pas vu que le @ pouvait être dans le milieu de la chaine, alors str.replace est plus que suffisant pour peu que tous les @ de la chaine doivent être supprimés (s'il y a dans le tas des adresses mails, il faudra utiliser re.sub avec le motif qui va bien).
import xml.etree.ElementTree as ET xml = '''<?xml version='1.0' encoding='iso-8859-1'?> <Data> <Parent> <enfant1>Jacques@</enfant1> <enfant2>Paul@</enfant2> <enfant3>Paul@ Edouard</enfant3> </Parent> </Data>''' data = ET.fromstring(xml) for enfant in data.find('Parent'): text = enfant.text.replace('@', '') enfant.text = text print(ET.tostring(data, encoding='unicode'))
j'ai fait quelque modification mais le résultat est un peu bizhare, en fait seul l'enfant 2 qui contient le virgule seul change mais le 1er enfant et la troisième enfant reste intacte .
Pouvez vous m'aider à rectifié mon code? merci encore!