Как найти слово в тексте и сохранить абзац в питоне? - PullRequest
0 голосов
/ 21 апреля 2020

Файл можно скачать здесь: https://easyupload.io/dhg1ae Изменить root import_ xml = 'root_donload / enwiki-latest-pages-статьи-multistream14. xml -p7697595p7744800'

У меня есть python программа, которая анализирует xml и печатает ...

from lxml import etree
import csv
import wikitextparser as wtp
import re

lista = []

def set_wikilinks(self):
    tree = etree.parse(self.input_xml)
    root = tree.getroot()
    # iterate through all the text
    for page in root.findall(".//page", namespaces=root.nsmap):
        title = page.findall(".//title", namespaces=page.nsmap)
        title = title[0].text
        for text in page.findall(".//text", namespaces=page.nsmap):
            if text.text is None or len(text.text.strip())==0:
                continue
            parsed = wtp.parse(text.text)
            for section in parsed.sections:
                section_title = section.title.strip()
                section_text = section.string.strip()


                for match in re.findall('San Francisco Chronicle', section_text):    

                    print('Found "%s"' % section_text)

input_xml = '/Users/prosy/.keras/datasets/enwiki-latest-pages-articles1.xml- 
p1p30303/enwiki-latest-pages-articles1.xml-p1p30303'

processor = WikiLinkTextProcessor(input_xml)
processor.set_wikilinks()

Когда я ищу слово "Хроники Сан-Франциско", он показывает следующий текст, два абзаца :

===2000 to present===

Passing as white in the 21st-century is more controversial: it is often seen as a rejection of 
blackness, family and culture.</ref>

===Passing as Indigenous Americans===

[[Image:Grey Owl.jpg|right|thumb|Portrait of Archibald Belaney, who [[Cultural 
 [[First Nations]] people, passing as an indigenous person for 
many years.]]accessdate=January 2, 2016 |work=San Francisco Chronicle |date=August 15, 2015}}</ref>"

Но мне просто нужно, чтобы он показал

===Passing as Indigenous Americans===

[[Image:Grey Owl.jpg|right|thumb|Portrait of Archibald Belaney, who [[Cultural 
 [[First Nations]] people, passing as an indigenous person for 
many years.]]accessdate=January 2, 2016 |work=San Francisco Chronicle |date=August 15, 2015}}</ref>"

Вывод должен быть одним абзацем, где он появляется с заголовком. Как это можно сделать? Thx.

ОБНОВЛЕНИЕ: файл XML является mediaWiki: https://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles1.xml-p1p30303.bz2 Интернет: https://en.wikipedia.org/wiki/Air_Corps_Tactical_School Добавить: root с файлом xml

Я делаю два разных поиска: первый, который я ищу по названию, и его вывод - это заголовок и параграф, который работает.

Второй, который я ищу прямо в тексте, поэтому у меня есть заголовок и все абзацы, и мне нужен только тот абзац, в котором найдено ключевое слово. Когда я ищу по section.title, тогда у меня есть параграф, потому что он есть.

Первый и второй выходы должны быть равны.

Ouput:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...