2011-10-21 3 views
0

두 프로그램 모두 동일한 XML 파일을 읽습니다. 첫 번째 프로그램은 모든 데이터를 <text></text> 태그 사이에 복사합니다. 그리고 두 번째 프로그램은 <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) 

두 번째 프로그램

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

난 당신이 첫 번째 프로그램의 끝에서 다음을 수행 할 수 없을 것입니다 어떤 이유가 표시되지 않는 : 당신이 무엇을 설명 당으로

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

를, 당신의 text 변수는 모든 를 포함해야 텍스트를 입력하면 정규 표현식을 사용하여 텍스트에서 필요한 부분을 필터링 할 수 있습니다.

+0

작동합니다. 정말 고맙습니다. 나는 Python을 처음 사용한다. 나는 배우고있다. –