【问题标题】:Replace a number in an xml using loop?使用循环替换xml中的数字?
【发布时间】:2019-01-13 05:40:11
【问题描述】:

以前在xml中没有做过这种处理。

我有这些空文件夹,名为:125,127,128

我有这个 xml:

 <?xml version="1.0" encoding="ASCII"?>
    <Metadata version="1.0">
        <CODE_OK>510</CODE_OK>
        <DeliveryDate>13/08/2018</DeliveryDate>

我想将&lt;CODE_OK&gt;510&lt;/CODE_OK&gt; 之间的数字替换为每个文件夹名称的数字:125,127 和 128,并将每个新的 xml 放到相应的文件夹中。

【问题讨论】:

  • 学习使用Bs4,很简单。 crummy.com/software/BeautifulSoup/bs4/doc
  • 我会检查一下,但您能建议如何执行此特定任务吗?
  • 嗯,你应该先做一些研究,并诚实地尝试解释你卡在哪里。你真的应该阅读How to Ask,因为正如目前所问的那样,这个问题与 SO 无关。

标签: python xml beautifulsoup


【解决方案1】:

这是一种方法。

import xml.etree.ElementTree as ET
import os

sampleXML = """<?xml version="1.0" encoding="ASCII"?>
    <Metadata version="1.0">
        <CODE_OK>510</CODE_OK>
        <DeliveryDate>13/08/2018</DeliveryDate>
    </Metadata>
    """

tree = ET.ElementTree(ET.fromstring(sampleXML))
for folder in os.listdir("YourPath"):                 #Iterate the dir
    tree.find("CODE_OK").text = folder                #Update dir name in XML
    tree.write(open(os.path.join(r"YourPath", folder, "yourxml.xml"), "w"))     #Write to XML

【讨论】:

  • 请记住,文件夹是空的,我应该在更改数字后给他们修改后的 xml。这是您的代码的作用吗?
  • 你为什么不执行和测试sn-p...并根据你的需要进行修改。
  • 它说:TypeError: write() argument must be str, not bytes
  • 它可能需要'wb'
  • 如何使导出的文件格式化为漂亮的打印?它在一行中导出。
猜你喜欢
  • 2016-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-31
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
相关资源
最近更新 更多