Edit XML-Dateitext basierend auf Pfad

Ich habe eine XML-Datei (z. B. jerry.xml), die einige der unten angegebenen Daten enthält.

<data>
<country name="Peru">
    <rank updated="yes">2</rank>
    <language>english</language>
    <currency>1.21$/kg</currency> 
    <gdppc month="06">141100</gdppc>
    <gdpnp month="10">2.304e+0150</gdpnp>
    <neighbor name="Austria" direction="E"/>
    <neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
    <rank updated="yes">5</rank>
    <language>english</language>
    <currency>4.1$/kg</currency> 
    <gdppc month="05">59900</gdppc>
    <gdpnp month="08">1.9e-015</gdpnp>
    <neighbor name="Malaysia" direction="N"/>
</country>

Ich habe die vollständigen Pfade einiger ausgewählter Texte aus der obigen XML-Datei mit dem folgenden Code extrahiert. Die Gründe sind in diesem @ angegebePos.

def extractNumbers(path, node):
    nums = []

    if 'month' in node.attrib:
        if node.attrib['month'] in ['05', '06']:
            return nums

    path += '/' + node.tag
    if 'name' in node.keys():
        path += '=' + node.attrib['name']

    elif 'year' in node.keys():
        path += ' ' + 'month' + '=' + node.attrib['month']
    try:
        num = float(node.text)
        nums.append( (path, num) )
    except (ValueError, TypeError):
        pass
    for e in list(node):
        nums.extend( extractNumbers(path, e) )
    return nums

tree = ET.parse('jerry.xml')
nums = extractNumbers('', tree.getroot())
print len(nums)
print nums

Dies gibt mir die Position der zu ändernden Elemente an, wie in Spalte 1 der folgenden CSV (z. B. hrong.csv) gezeigt.

Path                                                      Text1       Text2       Text3       Text4       Text5 
'/data/country name=singapore/gdpnp month=08';            5.2e-015;   2e-05;      8e-06;      9e-04;      0.4e-05;   
'/data/country name=peru/gdppc month=06';                 0.04;       0.02;       0.15;       3.24;       0.98;                                                 

Ich möchte den Text der Elemente der ursprünglichen XML-Datei (jerry.xml) basierend auf der Position der Elemente in Spalte 1 durch die in Spalte 2 der hrong.csv oben angegebenen ersetzen.

Ich bin ein Neuling in Python und stelle fest, dass ich möglicherweise nicht den besten Ansatz verwende. Ich würde mich über jede Hilfe bezüglich der Richtung bezüglich dieser freuen. Grundsätzlich muss ich nur einige ausgewählte Textknoten einer XML-Datei analysieren, die ausgewählten Textknoten ändern und jede Datei speichern.

Vielen Dan

Antworten auf die Frage(6)

Ihre Antwort auf die Frage