1

我将两个 XML 文件中的信息提取到两个字典中,因为我想比较这些文件并更改其中一个文件中的信息。

这些是我的字典:

源字典:

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

您的解决方案之一是:

假设您想将其打印为 json,如果您已经在使用 dicts 是有意义的。

import json 
output = json.dumps(d_target)

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

这将打印您的 dict 以将 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但使用该json模块是一种选择。否则,如果您想要更新的 XML 文件,则必须查看修改节点中的属性,并编写“somelibraryhere”.tostring()(或类似)方法的结果。

于 2012-07-17T08:28:50.263 回答