Создание словаря из текстов тегов в XML-файле (Python) - PullRequest
0 голосов
/ 25 октября 2019

У меня есть XML-файл (см., Например, ниже):

<DOC>
<DOCNO>7466</DOCNO>
<PROFILE>_AN-CESAXAAAFT</PROFILE>
<DATE>920518
</DATE>
<HEADLINE>
FT  18 MAY 92 / World News In Brief: Mansell drives into the history books
</HEADLINE>
<TEXT>
Britain's Nigel Mansell (left) led from start to finish in the San Marino
Grand Prix at Imola yesterday, becoming the first driver to win the first
five races of a formula one season. Mansell has a maximum 50 points in the
drivers' championship, 26 clear of second-placed Italian Riccardo Patrese.
</TEXT>
<PUB>The Financial Times
</PUB>
<PAGE>
International Page 1
</PAGE>
</DOC>

(многие из них есть в реальном файле)

Я также сгенерировал этот код до сих пор:

import xml.etree.ElementTree as ET
import re
from stemming.porter2 import stem as PT

tree = ET.parse('articles.xml')
root = tree.getroot()

myDict = {}
for x in root:
    myDict[x.find("DOCNO").text] = x.find("TEXT").text


for x in root.iter('TEXT'):
    x = x.lower()
    x = re.split('[^a-zA-Z]', x)
    x = PT(x)

print x

В основном я хочу создать словарь, в котором ключом является DOCNO, а значением является текст внутри TEXT, но после его обработки (что в данном случае означает: преобразование всего в нижний регистр). разделение на не алфавитно-цифровые значения и выделение слов).

Я новичок в python, поэтому, если у кого-то есть лучшее предложение, как это сделать, пожалуйста, дайте мне знать! Любой совет будет высоко ценится:)

Также - всякий раз, когда я даже пытаюсь напечатать текст внутри тега TEXT, я получаю странное форматирование, от которого я не могу избавиться (\ n везде) - любойИдея почему или как исправить? например:

{'8167': '\nTwo officers were injured when police clashed with youths on a Coventry\nestate for the second night running. Four petrol bombs were thrown at police\nvans.\n', 

1 Ответ

0 голосов
/ 26 октября 2019

Ниже

import xml.etree.ElementTree as ET


def _modify_text(txt):
    return txt
    # TODO implement


xml = '''<DOCS><DOC>
   <DOCNO>7466</DOCNO>
   <PROFILE>_AN-CESAXAAAFT</PROFILE>
   <DATE>920518</DATE>
   <HEADLINE>FT  18 MAY 92 / World News In Brief: Mansell drives into the history books</HEADLINE>
   <TEXT>Britain's Nigel Mansell (left) led from start to finish in the San Marino
Grand Prix at Imola yesterday, becoming the first driver to win the first
five races of a formula one season. Mansell has a maximum 50 points in the
drivers' championship, 26 clear of second-placed Italian Riccardo Patrese.</TEXT>
   <PUB>The Financial Times</PUB>
   <PAGE>International Page 1</PAGE>
</DOC></DOCS>'''

root = ET.fromstring(xml)
data = {d.find('./DOCNO').text: _modify_text(d.find('./TEXT').text.replace('\n', '')) for d in root.findall('.//DOC')}
print(data)

выход

{'7466': "Britain's Nigel Mansell (left) led from start to finish in the San MarinoGrand Prix at Imola yesterday, becoming the first driver to win the firstfive races of a formula one season. Mansell has a maximum 50 points in thedrivers' championship, 26 clear of second-placed Italian Riccardo Patrese."}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...