2011-10-21 17 views
0

両方のプログラムが同じXMLファイルを読み取ります。最初のプログラムはすべてのデータを<text></text>タグの間にコピーします。そして、第2のプログラムは、<text></text>タグから制限されたデータをコピーします。コーディングforループ

データを限定したいです。だから、最初のプログラムでは、このステートメントを使用することが可能である:

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) 

、第2のプログラム

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) 

UPDATE:私を助けてください。他の選択肢はありますか?私はあなたが最初のプログラムの最後に次の操作を行うことができないだろう、なぜ何らかの理由で表示されていない

答えて

0

:あなたが記述するものを1として

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

を、あなたのtext変数はすべてが含まれている必要がありますのテキストを入力すると、regexpはそこから必要な部分を除外することができます。

+0

その作業。どうもありがとうございます。私はPythonの初心者です。勉強中です。 –