我将两个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'}
但是,我从中提取词典的原始文件保持不变。我在这里缺少什么?
答案 0 :(得分:2)
您的解决方案之一是:
假设您想将其打印为json,如果您已经在使用dicts,那就有意义了。
import json
output = json.dumps(d_target)
f = open("myfile", 'w')
f.write(output)
f.close()
这将打印您的dict以将文件作为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()
答案 1 :(得分:0)
您的替换代码(在您的示例中)可以替换为.update()
上的dict
方法。
d_target.update(d_source)
我不确定您希望如何保留dict
,但使用json
模块是一种选择。否则,如果您需要更新的XML文件,则必须查看修改节点中的属性,并编写“somelibraryhere”.tostring()(或类似)方法的结果。