我想打印输出到文本文件与Python代码
cat test-01.kismet.netxml | perl -ne 'while(m/(?<\client-mac\>)(.*)(?=\<\/client-mac\>)/g{print $&; print "\n"})'
输出是我想要的:
FF:FF:FF:FF:FF:FF
FF:FF:FF:FF:FF:FF
我想要这样的东西:
proc = subprocess.Popen([["cat", "test-01.kismet.netxml", "|", "perl", "-new", "'while(m/(?<\client-mac\>)(.*)(?=\<\/client-mac\>)/g{print $& > clients.txt; print "\n" > clients.txt})'"], stdout=subprocess.PIPE, shell=True)
但它不起作用
问题将出现在这一部分:
'while(m/(?<\client-mac\>)(.*)(?=\<\/client-mac\>)/g{print $& > clients.txt; print "\n" > clients.txt})'
谢谢你的帮助和提示
好的,您已经将其标记为perl,并且已经得到了python的答案
下面是使用perl的方法:
但是如果您将它嵌入到python中,虽然我很欣赏“炮轰”到perl的残酷讽刺,但实际上您应该坚持使用python的解析器
关键是XML是上下文的,而正则表达式不是上下文的。解析器是您应该使用的工具
只要使用xml解析器,您的生活就会轻松得多:
输出到文件并不困难:
相关问题 更多 >
编程相关推荐