我有多个" 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和名称。
答案 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') ]
正则表达式/逻辑可能需要一些调整,具体取决于输入数据的格式错误。