首页 / XML / 使用python重塑xml?
使用python重塑xml?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用python重塑xml?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1537字,纯文字阅读大概需要3分钟。
内容图文
![使用python重塑xml?](/upload/InfoBanner/zyjiaocheng/811/b8115363b83e452e80be28c23f135a9e.jpg)
我有这样的xml
<data>
<B>Head1</B>
<I>Inter1</I>
<I>Inter2</I>
<I>Inter3</I>
<I>Inter4</I>
<I>Inter5</I>
<O>,</O>
<B>Head2</B>
<I>Inter6</I>
<I>Inter7</I>
<I>Inter8</I>
<I>Inter9</I>
<O>,</O>
<O> </O>
</data>
我希望XML看起来像
<data>
<combined>Head1 Inter1 Inter2 Inter3 Inter4 Inter5</combined>,
<combined>Head2 Inter6 Inter7 Inter8 Inter9</combined>
</data>
我试图得到“B”的所有值
for value in mod.getiterator(tag='B'):
print (value.text)
Head1
Head2
for value in mod.getiterator(tag='I'):
print (value.text)
Inter1
Inter2
Inter3
Inter4
Inter5
Inter6
Inter7
Inter8
Inter9
现在我应该如何将第一个迭代值保存到一个标签,然后将第二个迭代值保存在不同的标签中.即.如何让迭代从标签“B”开始找到跟随它的所有标签“I”然后再次迭代,如果我再次找到标签“B”并将它们全部保存在新标签中.
标签“O”将始终存在于最后
解决方法:
您可以使用xml.etree中的ElementTree模块:
from xml.etree import ElementTree
struct = """
<data>
{}
</data>
"""
def reformat(tree):
root = tree.getroot()
seen = []
for neighbor in root.iter('data'):
for child in neighbor.getchildren():
tx = child.text
if tx == ',':
yield "<combined>{}<combined>".format(' '.join(seen))
seen = []
else:
seen.append(tx)
with open('test.xml') as f:
tree = ElementTree.parse(f)
print(struct.format(',\n'.join(reformat(tree))))
结果:
<data>
<combined>Head1 Inter1 Inter2 Inter3 Inter4 Inter5<combined>,
<combined>Head2 Inter6 Inter7 Inter8 Inter9<combined>
</data>
请注意,如果您不确定所有块是否以逗号分隔,则只需更改条件,如果tx ==’,’:根据您的文件格式.您还可以检查tx何时以’Head’开始,然后如果看到不是空的,则看到并清除其内容,否则追加tx并继续.
内容总结
以上是互联网集市为您收集整理的使用python重塑xml?全部内容,希望文章能够帮你解决使用python重塑xml?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。