从XML中提取信息

0 投票
1 回答
895 浏览
提问于 2025-04-17 04:41

我正在使用etree模块。我想提取与<text ...>标签相关的信息。这里是我的XML文件。我想要的是,如果<text ...">{{Infobox filmInfobox film开头,那么就复制{{ }}之间的所有文本。这可能吗?谢谢

更新:XML文件已更新

1 个回答

2

下面这段代码应该能满足你的需求:

import re
from xml.etree import ElementTree                                               

with open('films.xml') as f:                                                    
    xml = ElementTree.parse(f)                                                  

for t in xml.findall('.//{http://www.mediawiki.org/xml/export-0.5/}text'):
    print '===================='
    m = re.search(r'(?s).*?{{(Infobox film.*?)}}', t.text)
    if m:
        print m.group(1)

这里的正则表达式以 (?s) 开头,这个设置开启了 DOTALL 选项,也就是说 . 不仅能匹配其他字符,还能匹配换行符。接下来的两个 .*? 是非贪婪匹配,意思是它们会找到最短的零个或多个字符,直到后面的表达式可以匹配为止。

撰写回答