从XML中提取信息
我正在使用etree模块。我想提取与<text ...>
标签相关的信息。这里是我的XML文件。我想要的是,如果<text ...">{{Infobox film
以Infobox 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
选项,也就是说 .
不仅能匹配其他字符,还能匹配换行符。接下来的两个 .*?
是非贪婪匹配,意思是它们会找到最短的零个或多个字符,直到后面的表达式可以匹配为止。