извлечение данных из xml документа .docx - PullRequest
0 голосов
/ 20 апреля 2020

Мне нужно извлечь данные между тегами, как указано ниже. Также я хочу объединить данные, если данные соответствуют одному и тому же идентификатору.

Например, согласно приведенному ниже XML оба тега находятся на вкладках, соответствующих одному и тому же идентификатору «00F1234A». Следовательно, «World» необходимо извлечь.

xml_string="
<w:r w:rsid="00F1234A">     
    <w:rPr> 

    </w:rPr>
    <w:t>Hello</w:t>
</w:r>   


<w:r w:rsid="00F1234A">     
    <w:rPr> 

    </w:rPr>
    <w:t xml:space="preserve">World</w:t>
</w:r>"

В настоящее время я извлекаю данные между тегами со следующим регулярным выражением

re.findall("<w:t>(.+?)</w:t>",xml_string)

это дает мне Hello, но не Hello World

как я могу объединить данные в соответствии с тем же идентификатором, который в этом случае "00F1234A"

1 Ответ

2 голосов
/ 20 апреля 2020

Чтобы разобрать это, вам понадобятся пространства имен из XML (xmlns: x = "urn:something").

Используйте извлечения для извлечения значений вместо регулярных выражений, например:

 import xml.etree.ElementTree as ET
#parse XML string
tree = ET.fromstring('xml_string')

#declare namespace dictionary
nsmap = {'w':'http://schemas.openxmlformats.org/wordprocessingml/2006/main'}

tagvalues = []
#loop through all w:t tags and append their values to list
for i in root.findall('.//w:r//w:t', nsmap):
    tagvalues.append(i.text)

#concatenate all values into a string
string  = ''
[string.join(word) for word in tagvalues]

Проверьте этот пост .

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