使用python遍历复杂的xml数据以获取特定值
我想得到使用python遍历复杂的xml数据以获取特定值,python,xml,Python,Xml,我想得到下中的温度值。我只想把它放在“墨尔本”地区 xml源= 我尝试了以下方法,但这只打印出整个解析的xml,而不是我想要得到的 import xml.etree.ElementTree as ET import requests url = "http://www.bom.gov.au/fwo/IDV10753.xml" response = requests.get(url, verify=False).content.decode('UTF-8') tree = ET.parse(r
下
中的温度值。我只想把它放在“墨尔本”地区
xml源=
我尝试了以下方法,但这只打印出整个解析的xml,而不是我想要得到的
import xml.etree.ElementTree as ET
import requests
url = "http://www.bom.gov.au/fwo/IDV10753.xml"
response = requests.get(url, verify=False).content.decode('UTF-8')
tree = ET.parse(response)
print(tree.find('product').find('amoc').find('forecast').find('area')
.find('forecast-period').find('element').text)
我要的是墨尔本地区的所有7天温度值。非常感谢您的帮助 您可以在多个嵌套循环中通过蛮力迭代XML:
from xml.etree.ElementTree import fromstring, ElementTree
from requests import get
url = 'http://www.bom.gov.au/fwo/IDV10753.xml'
req = get(url)
tree = ElementTree(fromstring(req.text))
root = tree.getroot()
for outer in root:
if outer.tag == 'forecast':
for inner in outer:
if inner.attrib['description'] == 'Melbourne':
for element in inner:
for temp in element:
if temp.attrib["type"] == 'air_temperature_maximum':
print(temp.text)
给出了7个温度:
23
28
42
24
22
24
27
['23', '28', '42', '24', '22', '24', '27']
您还可以使用以下列表将温度存储在列表中:
for outer in root:
if outer.tag == "forecast":
for inner in outer:
if inner.attrib["description"] == "Melbourne":
temps = [
temp.text
for element in inner
for temp in element
if temp.attrib["type"] == "air_temperature_maximum"
]
print(temps)
温度列表:
23
28
42
24
22
24
27
['23', '28', '42', '24', '22', '24', '27']
我将把这些温度的最终转换留给你们 您可以在多个嵌套循环中通过蛮力迭代XML:
from xml.etree.ElementTree import fromstring, ElementTree
from requests import get
url = 'http://www.bom.gov.au/fwo/IDV10753.xml'
req = get(url)
tree = ElementTree(fromstring(req.text))
root = tree.getroot()
for outer in root:
if outer.tag == 'forecast':
for inner in outer:
if inner.attrib['description'] == 'Melbourne':
for element in inner:
for temp in element:
if temp.attrib["type"] == 'air_temperature_maximum':
print(temp.text)
给出了7个温度:
23
28
42
24
22
24
27
['23', '28', '42', '24', '22', '24', '27']
您还可以使用以下列表将温度存储在列表中:
for outer in root:
if outer.tag == "forecast":
for inner in outer:
if inner.attrib["description"] == "Melbourne":
temps = [
temp.text
for element in inner
for temp in element
if temp.attrib["type"] == "air_temperature_maximum"
]
print(temps)
温度列表:
23
28
42
24
22
24
27
['23', '28', '42', '24', '22', '24', '27']
我将把这些温度的最终转换留给你们 就像你读懂了我的心思。我在想如何把它转换成一个列表。你是个传奇人物!谢谢你。@Bharath不用担心,伙计。你的问题清楚易懂,我立刻认为展示一个列表示例对你有好处。当有人提出好的问题时,好的答案总会出现:)。就像你能读懂我的心思一样。我在想如何把它转换成一个列表。你是个传奇人物!谢谢你。@Bharath不用担心,伙计。你的问题清楚易懂,我立刻认为展示一个列表示例对你有好处。当提出好问题时,总会有好的答案:)。