2010-03-31 6 views
0

J'utilise minidom pour analyser un document XML. J'ai pris les données avec les étiquettes de yum et les ai stockées dans une liste et ai calculé la fréquence des mots. Cependant, ce n'est pas les stocker ou les lire comme des chaînes dans la liste. Y a-t-il un autre moyen de le faire? En ce moment, voici ce que j'ai:Conversion d'un objet Doc en une chaîne en python

yumNodes = [node for node in doc.getElementsByTagName("yum")] 

for node in yumNodes: 
    yumlist.append(t.data for t in node.childNodes if t.nodeType == t.TEXT_NODE) 

for ob in yumlist: 
    for o in ob: 
     if word not in freqDict: 
      freqDict[word] = 1 
     else: 
      freqDict[word] += 1 
+0

Pouvez-vous envoyer une partie de votre XML aussi? – YOU

+0

Que diriez-vous de lister l'exception spécifique que vous voyez? –

Répondre

1

pas directement lié à votre question, mais comme une remarque qui pourrait améliorer votre code ... le motif

freqDict = {} 
... 
if word not in freqDict: 
    freqDict[word] = 1 
else: 
    freqDict[word] += 1 

est généralement remplacé par

import collections 
freqDict = collections.defaultdict(int) 
... 
freqDict[word] += 1 

ou pré-2,5

freqDict = {} 
... 
freqDict.setdefault(word, 0) += 1 
0

Remplacer

yumlist.append(t.data for t in node.childNodes if t.nodeType == t.TEXT_NODE) 

ce qui suit:

yumlist.append(t.nodeValue for t in node.childNodes if t.nodeType == 3)