以类似XML的格式解析多个文件

时间:2015-03-27 22:29:57

标签: python xml parsing

我有多个" XML"这种格式的文件:

<doc id="123" name="aThing">
BLAH BLAH BLAH
</doc>
<doc id="1234" name="theThing">
BLAH BLAH BLAH
</doc>
<doc id="12345" name="Thing">
BLAH BLAH BLAH
</doc>

我尝试过使用lxml(ET.fromstring(open('aFile.txt').read())并且没有返回任何内容。我尝试使用BeautifulSoup,但速度太慢了。在每个</ref>中可能会有一些像随机<doc></doc>一样的破解xml,就是它。

我如何在Python中尽可能快地解析它?我更喜欢正则表达式,因为xml结构没有变化,而且必须很快。我不确定如何拆分文件,并使用正则表达式获取id和名称。

1 个答案:

答案 0 :(得分:1)

您可以使用findall使用以下内容:

import re

pat = re.compile(r'<doc id="([^"]*)" name="([^"]*)">(.*?)</doc>', re.DOTALL)

with open('input.txt') as f: xml = f.read()

matches = pat.findall(xml)

print matches

输出:

[
    ('123', 'aThing', '\nBLAH BLAH BLAH\n'), 
    ('1234', 'theThing', '\nBLAH BLAH BLAH\n'), 
    ('12345', 'Thing', '\nBLAH BLAH BLAH\n')
]

正则表达式/逻辑可​​能需要一些调整,具体取决于输入数据的格式错误。