Arhn - архитектура программирования

Как исправить проблему с операторами Xpath при разборе python xml

Я пытаюсь найти дни, когда maxtemp больше 0. Однако следующий код дает мне пустой список.

Я попытался использовать пример с примерами w3schools xpath, где он находит название книг, цена которых превышает 35.

Пример: /bookstore/book[цена>35]/название

XML:

<bookstore>

<book category="cooking">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="children">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

<book category="web">
  <title lang="en">XQuery Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.99</price>
</book>

<book category="web">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>

</bookstore>

Это код и XML-файл, с которым я пытаюсь работать:

import xml.etree.ElementTree as ET 
tree = ET.parse('SaintJohn.xml')
root = tree.getroot()
list=root.findall('.//stationdata[maxtemp>0]/maxtemp')
for i in list:
    print(i.text)

Это файл XML:

<climate>
<stationdata day="1" month="1" year="2019">
<maxtemp description="Maximum Temperature" 
units="°C">1.9</maxtemp><mintemp description="Minimum Temperature" 
units="°C">-10.6</mintemp><meantemp description="Mean Temperature" 
units="°C">-4.4</meantemp><heatdegdays description="Heating Degree 
Days" units="°C">22.4</heatdegdays>
</stationdata>
<stationdata day="2" month="1" year="2019"><maxtemp 
description="Maximum Temperature" units="°C">-10.6</maxtemp> 
<mintemp description="Minimum Temperature" 
units="°C">-22.4</mintemp><meantemp description="Mean Temperature" 
units="°C">-16.5</meantemp><heatdegdays description="Heating 
Degree Days" units="°C">34.5</heatdegdays></stationdata>
</climate>

Я хотел бы только один элемент в списке.



Ответы:


1

Это можно сделать с помощью lxml:

temp = [your xml above]

from lxml import html
root = html.fromstring(temp)

list = root.xpath('.//stationdata/maxtemp[text()>0]')
for i in list:
    print(i.text)

Вывод:

1.9

13.07.2019
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..