Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python遍历复杂的xml数据以获取特定值_Python_Xml - Fatal编程技术网

使用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不用担心,伙计。你的问题清楚易懂,我立刻认为展示一个列表示例对你有好处。当提出好问题时,总会有好的答案:)。