我正在使用etree模块。我正在尝试提取<text ...>
标记周围的信息。这是my XML file。我希望<text ...">{{Infobox film
以Infobox film
开头,然后复制{{ }}
之间的所有文字。可能吗?感谢
更新:更新了XML文件
答案 0 :(得分: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
选项,这意味着.
匹配换行符以及任何其他字符。 .*?
的两个实例是任何字符的非贪婪匹配 - 即它们将找到零个或多个字符的最短时间段,直到表达式的其余部分可以匹配。