Python ищет конкретного ребенка ребенка - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь загрузить данные XML (что я сделал), проанализировать их (что я сделал) и выполнить поиск по данным XML, чтобы получить результат.

<Substances>
<Name>Substance 1</Name>
<Product>
<Product_name>Product ABC</Product_name>
<MRL>0.0123*</MRL>
</Product>
<Product>
<Product_name>Product XYZ</Product_name>
<MRL>0.0234*</MRL>
</Product>
</Substances>
<Substances>
<Name>Substance 2</Name>
<Product>
<Product_name>Product ABC</Product_name>
<MRL>0.789*</MRL>
</Product>
<Product>
<Product_name>Product XYZ</Product_name>
<MRL>0.567</MRL>
</Product>
</Substances>

После локального сохранения XML-файла (поскольку он довольно большой) я хочу выполнить поиск вещества, скажем, «Вещество 2», а затем выполнить поиск по названию продукта «Product XYZ»,затем найдите данные MRL по этому продукту, относящиеся к этому веществу.

(обратите внимание, что все вещества уникальны, а продукты - нет, потому что продукты повторяются для каждого другого вещества)

Для большей ясности приведу пример: если термин поиска вещества был«Вещество 2», и поисковым термином продукта было «Product XYZ», программа выдаст «0,567».

[править] Часть моего кода, относящаяся к этому вопросу, пока:

substance='Substance 2'
product_name='Product XYZ'

for mrl in root.findall(substance):
    for prod in find(product):
        print(mrl.text)

Это не выдает ошибку, но и не выводит вывод.

[\ edit]

Пожалуйста, дайте мне знать, если потребуется дополнительная информация.Помощь приветствуется.

1 Ответ

0 голосов
/ 01 октября 2018

Используйте этот урок https://docs.python.org/3/library/xml.etree.elementtree.html

for substance in root.find('Substances')
  if substance.find("Name").text = "Substance 2":
    for product in substance.findall('Product'):
        if  product.find('Product_name').text == 'Product XYZ':
            return product.find('MRL').text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...