将Python字典的值写回文件

时间:2012-07-17 07:50:47

标签: python dictionary replace

我将两个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'}

但是,我从中提取词典的原始文件保持不变。我在这里缺少什么?

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()(或类似)方法的结果。