Я пытаюсь получить два разных элемента из файла XML; Я пытаюсь напечатать их как x и y на участке разброса. Мне удастся получить оба элемента, но один список длится 155, а другой - только 50.Оператор if только для определенных атрибутов XML
Поэтому мне нужно добавить оператор if
, чтобы выбрать элементы from
, которые имеют ассоциированный элемент windSpeed
.
url = "http://api.met.no/weatherapi/locationforecast/1.9/?lat=52.41616;lon=-4.064598"
response = requests.get(url)
xml_text=response.text
weather= bs4.BeautifulSoup(xml_text, "xml")
f = open('file.xml', "w")
f.write(weather.prettify())
f.close()
Я затем пытается получить время (from
) элемент и (windSpeed > mps)
элемент и атрибут. Я хотел бы использовать использование Beautifulsoup, если это возможно, или прямой цикл if
.
with open ('file.xml') as file:
soup = bs4.BeautifulSoup(file, "xml")
times = soup.find_all("time")
windspeed = soup.select("windSpeed")
form = ("%Y-%m-%dT%H:%M:%SZ")
x = []
y = []
for element in times:
time = element.get("from")
t = datetime.datetime.strptime(time, form)
x.append(t)
for mps in windspeed:
speed = mps.get("mps")
y.append(speed)
plt.scatter(x, y)
plt.show()
Когда я бегу он поднимает следующее сообщение об ошибке:
raise ValueError("x and y must be the same size")
ValueError: x and y must be the same size
Я предполагаю, что это потому, что списки имеют разную длину. Я знаю, что есть, вероятно, простой способ ее исправить, любые идеи были бы замечательными.
Для того, – usr2564301