我有一个巨大的XML文件,我需要从中获取特定条目的数据。文件结构为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE stuff>
<?xml-stylesheet href="file:///usr/local/test.xsl" type="text/xsl"?>
<!-- 127.0.0.1 -->
<opentag>
<tag1><XXXX YYYY VVV SSS></tag1>
<tag2>
<test>aaa_string_bbb_ccc</test>
</tag2>
<debugging level="0"/>
</opentag>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE >
<?xml-stylesheet href="file:///usr/local/test.xsl" type="text/xsl"?>
<!-- 192.168.10.1 -->
<opentag>
<tag1><DDD FFF BBB></tag1>
<tag2>
<test>zzz_number_yyy_xxxx</test>
</tag2>
<debugging level="0"/>
</opentag>
在我的XML中,我有很多这样的条目。
我要实现的是提取某些条目的所有行(完整记录)。
我需要创建不同的xml文件,每次您在
<?xml version="1.0" encoding="UTF-8"?>
直到下一个
</opentag>
。在
在本例中,我希望有两个不同的xml文件,具有不同的文件名。例如:
1->127.0.0.1.xml:
^{pr2}$第二个是:
2->192.168.10.1.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE >
<?xml-stylesheet href="file:///usr/local/test.xsl" type="text/xsl"?>
<!-- 192.168.10.1 -->
<opentag>
<tag1><DDD FFF BBB></tag1>
<tag2>
<test>zzz_number_yyy_xxxx</test>
</tag2>
<debugging level="0"/>
</opentag>
什么是正则表达式来为特定条目执行这种记录提取? 有没有其他的Python式的方法来达到这个目的? 我很感激你在这方面的帮助。在
作为
假设所有文件的格式都相同,
<! 127.10.10.1 >
实际上在第一个可以使用的文件中itertools.groupby要将部分分组:对于您的示例数据,它可以准确地为您提供所需的信息。在
不要为此使用regex。而是看看ElementTree模块。这样,您就可以迭代所有的opentags,然后将每个opentags写入一个不同的文件。这比使用regex更像python('不要重新发明轮子)。在
如果必须使用regex,可以执行以下操作:
确保传递
's'
修饰符,使'.'
与换行符匹配。在这是最终解决方案:
^{pr2}$相关问题 更多 >
编程相关推荐