<?xml version="1.0" encoding="utf-8"?>
<SetupConf>
<LocSetup>
<Src>
<Dir>C:\User1\test1</Dir>
<Dir>C:\User2\log</Dir>
<Dir>D:\Users\Checkup</Dir>
<Dir>D:\Work1</Dir>
<Dir>E:\job1</Dir>
</Src>
</LocSetup>
</SetupConf>
其中<Dir>
节点取决于用户输入。在&#34; Dir&#34;节点可能是1,2,5,10 dir结构定义。
我可以使用以下Python代码从xml中提取数据:
from xml.dom import minidom
dom = minidom.parse('Test0001.xml')
Src=dom.getElementsByTagName('Src')
for node in Src:
alist =node.getElementsByTagName('Dir')
for a in alist:
dirtext = a.childNodes[0].nodeValue + ','
print dirtext
............... 我在多行输出:
C:\User1\test1,
C:\User2\log,
D:\Users\Checkup,
D:\Work1,
E:\job1,
但是我需要单行输出而没有空格并删除最后一个逗号,如:
C:\User1\test1,C:\User2\log,D:\Users\Checkup,D:\Work1,E:\job1
请帮助我这方面,我已经尝试了很多......可能是通过使用itertools分组或defaultdict。非常感谢任何帮助。
答案 0 :(得分:0)
我认为您正在尝试存储字符串,因此请使用 str.join :
output = ",".join([a.childNodes[0].nodeValue for node in Src for a in node.getElementsByTagName('Dir')])
您可以在打印后添加一个尾随逗号,这样您就不会在每个print dirte,
之后打印换行符,但不会为后面的逗号占用,如果您实际上没有帮助想要存储字符串。
输出:
In [1]: from xml.dom import minidom
In [2]: x = r"""<?xml version="1.0" encoding="utf-8"?>
...: <SetupConf>
...: <LocSetup>
...: <Src>
...: <Dir>C:\User1\test1</Dir>
...: <Dir>C:\User2\log</Dir>
...: <Dir>D:\Users\Checkup</Dir>
...: <Dir>D:\Work1</Dir>
...: <Dir>E:\job1</Dir>
...: </Src>
...: </LocSetup>
...: </SetupConf>"""
In [3]: from StringIO import StringIO
In [4]:
In [4]: dom = minidom.parse(StringIO(x))
In [5]: Src = dom.getElementsByTagName('Src')
In [6]: output = ",".join([a.childNodes[0].nodeValue for node in Src for a in node.getElementsByTagName('Dir')])
In [7]: print(output)
C:\User1\test1,C:\User2\log,D:\Users\Checkup,D:\Work1,E:\job1