如何在xml中搜索密钥并用Python替换它的值?

时间:2016-03-07 16:15:29

标签: python xml string

我在xml文件中有数千个这样的应用程序名称行:

<app name="app-sq-461-author-core-0">

我想做以下事情:

  1. 查看&#39; app name&#39;的所有行。存在
  2. 如果是,请查看该值是否与&#34; test&#34;
  3. 相符
  4. 如果是,请用&#34替换值;删除我&#34;
  5. 目前,我有:

    bare = importedxml.find('app name')
    testvalue = bare.split("=")[1]
    if testvalue = "test" in importedxml:
       testvalue = "delete me"
    

    最好的方法是什么?我遇到了很多问题。

2 个答案:

答案 0 :(得分:2)

你试过BeautifulSoup吗? 沿着这些方向的东西

import bs4

xml = "Your bare XML String"
soup = bs4.BeautifulSoup(xml)
test_apps = soup.findChildren("app", {"name": "test"})
for app in test_apps:
    app["name"] = "delete me"

with open("filename.xml", "w") as f:
    f.write(str(soup))

但是,正如您在下面的评论中提到的那样,您没有bs4,我唯一能想到的是使用正则表达式替换。

import re

xml = "your XML String"
pattern = re.compile('app name="test"')
replaced = pattern.sub('app name="delete me"', xml)

答案 1 :(得分:0)

sed 's/<app name="foo">/<app name="bar">/g' < file.xml > file.xml.new
mv file.xml file.xml.old
mv file.xml.new file.xml