1

これらのファイルを比較し、そのうちの 1 つの情報を変更したかったので、2 つの XML ファイルから 2 つの辞書に情報を抽出しました。

これらは私の辞書です:

ソース辞書:

d_source={'123': 'description_1', '456': 'description_2'}

ターゲット辞書:

d_target={'123': '\n', '456': 'description_2'}

これは私の交換コードです:

for i in d_source:
    for j in d_target:
        if d_target[j]=='\n':
            d_target[j]=d_source[i]
print (d_target)

d_target が更新されます

d_target = {'123': 'description_1', '456': 'description_2'}

ただし、辞書を抽出した元のファイルは変更されていません。ここで何が欠けていますか?

4

2 に答える 2

2

あなたのための解決策の1つは次のとおりです。

json として出力したいとしましょう。すでに dict を使用している場合は理にかなっています。

import json 
output = json.dumps(d_target)

f = open("myfile", 'w')
f.write(output)
f.close()

これにより、辞書がファイル myfile に json として出力されます。

また、xml として使用する場合は、elementtree モジュールを使用できます。

次に、次のようなものを使用できます。

from elementtree import ElementTree as ETree
ET = ETree
ET.xml_declaration = "true"
products = ET.Element("products")
properties = ET.Element("properties")
products.append(properties)
products.attrib["xmlns"] = "http://schema.example.com/product_data_1.0"
update = ET.Element("update")
delete = ET.Element("delete")
products.append(delete)
products.append(update)

これは、それがどのように行われるかを確認するための単なる例であり、これは次のようなものを作成します:

 <products xmlns="http://schema.example.com/product_data_1.0">
      <properties />
      <delete />
      <update />
 </products>

そして、この xml を再度ファイルに出力するには:

output = ET.tostring(products, "utf-8")
f = open("xml", 'w')
f.write(output)
f.close()
于 2012-07-17T08:07:11.383 に答える
0

あなたの置換コード(あなたの例では)は、の.update()メソッドに置き換えることができますdict.

d_target.update(d_source)

どのように永続化するかはわかりませんが、モジュールdictを使用することは 1 つのオプションです。jsonそれ以外の場合は、更新された XML ファイルが必要な場合は、ノードの属性を変更し、"somelibraryhere".tostring() の (または類似の) メソッドの結果を書き込む必要があります。

于 2012-07-17T08:28:50.263 に答える