Bonjour à tous,
J'ai un énorme fichier XML (1,7 GB) qui comporte les mots de dictionnaire et leurs synonymes quand il en existe.
Ce fichier se présente sous la forme suivante :
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <?xml version="1.0" encoding="utf-8"?> <glawi lang="fr" dateDump="2015-12-26" endParsingDate="2016-05-18_15:47:02"> <article> <title>aulacode</title> <pageId>475227</pageId> <meta> <category>Rongeurs en français</category> <reference>Meyer|article=aulacodes</reference> </meta> <text> <pos type="nom" lemma="1" locution="0" number="s"> <subsection type="semRel"> <item type="synonym">rat des roseaux</item> <item type="hyperonym">hystricognathe</item> <item type="hyperonym">thryonomyidé</item> </subsection> </pos> </text> </article> </glawi>
Mon objectif est tout d'abord de chercher si un mot existe dans ce dictionnaire (par exemple ici "aulacode" dans la balise "title"), et si c'est le cas savoir si ce mot a des synonymes, antonymes etc. (balises <item type="synonym">...).
Je souhaiterais donc avoir le résultat suivant :
Ce que j'ai fait jusqu'à présent fonctionne sur un petit extrait du fichier XML mais dès que je dois travailler sur l'intégralité, cela prend tellement de temps que je n'ai même pas de résultat. J'ai l'impression que le chargement du fichier XML seul prend déjà un temps fou.
Auriez-vous des conseils pour avoir quelque chose qui fonctionne rapidement ?
Ci-dessous mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 import xml.etree.ElementTree as ET tree = ET.parse(xmlFile) root = tree.getroot() for element in root: for child in element: if child.tag == "title": print("entree witionnaire = " + str(child.text)) for child in element: if child.tag == "text": for grandchild in child: for grandgrandchild in grandchild: for grandgrandgrandchild in grandgrandchild: print("\t" + str(grandgrandgrandchild.attrib.get("type")) + "= " + str(grandgrandgrandchild.text))
Un grand merci d'avance !!
Partager