我们有xml文件,其中包含在机器上运行的不同进程的xml标记。我想获取所有进程的名称以及它的start,stop命令,并将其保存为每个进程的逗号分隔。
文件中的一个标记示例位于之下: -
< PROCESS NAME =“匿名”TEMP =“否”>
<描述> Bla Bla Bla< / Description>
<日志文件> $ {PROCESS_LOG}< / LogFile>
<用户=“ABC”>
<开始>
<命令> STARTPROCESS< / Command>
<参数> 12< /参数>
< /开始>
<停止>
<命令> STOPPROCESS< / Command>
< /停止>
< SearchCriteria>
< ExeName =“SREACH12”>
<参数> PROCESS12< /参数>
< / ExeName>
< / SearchCriteria>
< /用户>
< / PROCESS>
*
我想在文本文件中输出如下: -
匿名,STARTPROCESS 12,STOPPROCESS,SREACH12 PROCESS12
请注意,文件中有多个这样的标签,所以我希望所有这些标签与上面相同。 shell中的东西也会起作用。请帮忙。
答案 0 :(得分:0)
使用re。
import re
text ='< PROCESS NAME="Anonymous" TEMP="No" > \
< Description>Bla Bla Bla< /Description > \
< LogFile>${PROCESS_LOG}< /LogFile >\
< User="ABC" >\
< Start >\
< Command>STARTPROCESS< /Command >\
< Parameters>12< /Parameters >\
< /Start >\
< Stop >\
< Command>STOPPROCESS< /Command >\
< /Stop >\
< SearchCriteria >\
< ExeName="SREACH12" >\
< Parameters>PROCESS12< /Parameters >\
< /ExeName >\
< /SearchCriteria >\
< /User >'
# Target: Anonymous,STARTPROCESS 12,STOPPROCESS,SREACH12 PROCESS12
pName = re.findall(r'PROCESS NAME="(.+?)" TEMP', text)
commands = re.findall(r'< Command>(.+?)< /Command >', text)
params = re.findall(r'< Parameters>(.+?)< /Parameters >', text)
exeName = re.findall(r'< ExeName="(.+?)" >', text)
myOutput = pName[0]+","+commands[0]+" "+params[0]+","+commands[1]+","+exeName[0]+" "+params[1]
print(myOutput)
打印:
Anonymous,STARTPROCESS 12,STOPPROCESS,SREACH12 PROCESS12