Python 梳理线圈

Python 梳理线圈,python,xml,elementtree,Python,Xml,Elementtree,两个程序正在读取相同的XML文件。第一个程序复制标记之间的所有数据。第二个程序从标记复制有限的数据 我只想要有限的数据。那么,是否可以在第一个程序中使用此语句: m = re.search(r'(?ms).*?{{(Infobox film.*?)}}', t.text) 第一个节目 from lxml import etree doc = etree.parse('file.xml') def first(seq,default=None): for item in seq:

两个程序正在读取相同的XML文件。第一个程序复制
标记之间的所有数据。第二个程序从
标记复制有限的数据

我只想要有限的数据。那么,是否可以在第一个程序中使用此语句:

m = re.search(r'(?ms).*?{{(Infobox film.*?)}}', t.text)

第一个节目

from lxml import etree
doc = etree.parse('file.xml')
def first(seq,default=None):
  for item in seq:
    return item
  return default
    NSMAP=dict(mw="http://www.mediawiki.org/xml/export-0.5/")
for i,page in enumerate(doc.xpath('/mw:mediawiki/mw:page',namespaces=NSMAP)):
  text = first(page.xpath('./mw:revision/mw:text/text()',namespaces=NSMAP))
  id = first(page.xpath('./mw:id/text()',namespaces=NSMAP))
  title = first(page.xpath('./mw:title/text()',namespaces=NSMAP))
  print " %s"  % (text)

第二程序

import re
from xml.etree import ElementTree
with open('file.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'(?ms).*?{{(Infobox film.*?)}}', t.text)
    if m:
        print m.group(1)

更新:请帮助我。还有其他选择吗?

我看不出你有什么理由不能在第一个课程结束时完成以下工作:

m = re.search(r'(?ms).*?{{(Infobox film.*?)}}', text)
if m:
    print m.group(1)

根据您的描述,您的
text
变量应该包含所有文本,然后您的regexp应该能够从中筛选出必要的部分。

它的工作原理。非常感谢你。我是python新手。我在学习。