gpt4 book ai didi

Python:XML 中所有标记名称中的字符串替换(用下划线替换连字符)

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:25 27 4
gpt4 key购买 nike

我有一个格式不太好的 XML,在标签名称中带有连字符,我想用下划线替换它(以便能够与 lxml.objectify 一起使用)。我想替换所有标签名称,包括嵌套的子项。

示例 XML:

<job>
<server>
<cpu-set>
</cpu-set>
</server>
<ip-routings>
</ip-routings>
</job>

我想以一种干净的方式(没有正则表达式,但使用像 lxml 这样的 XML 库)将这个 XML 转换成这个:

<job>
<server>
<cpu_set>
</cpu_set>
</server>
<ip_routings>
</ip_routings>
</job>

什么是 pythonic 和干净的方法来做到这一点?

最佳答案

使用xpath查找带有连字符的元素并重写标签:

from lxml import etree
data = """<job>
<server>
<cpu-set>
</cpu-set>
</server>
<ip-routings>
</ip-routings>
</job>"""
doc = etree.XML(data)
for e in doc.xpath('//*[contains(local-name(),"-")]'):
e.tag = e.tag.replace('-','_')

print etree.tostring(doc)

产量:

<job>
<server>
<cpu_set>
</cpu_set>
</server>
<ip_routings>
</ip_routings>
</job>

关于Python:XML 中所有标记名称中的字符串替换(用下划线替换连字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8324018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com