提问人:Michael Mueller 提问时间:3/25/2023 最后编辑:Shawn HemelstrandMichael Mueller 更新时间:3/27/2023 访问量:35
python解析XML,如何获取值?
python parsing xml, how to get values?
问:
我尝试在 Python 中解析 XML 数据,并在提取值时遇到困难。 数据如下所示:
[<generic:Obs>
<generic:ObsDimension value="2020-01-02"/>
<generic:ObsValue value="1.1193"/>
<generic:Attributes>
<generic:Value id="OBS_STATUS" value="A"/>
<generic:Value id="OBS_CONF" value="F"/>
</generic:Attributes>
</generic:Obs>, <generic:Obs>
<generic:ObsDimension value="2020-01-03"/>
<generic:ObsValue value="1.1147"/>
<generic:Attributes>
<generic:Value id="OBS_STATUS" value="A"/>
<generic:Value id="OBS_CONF" value="F"/>
</generic:Attributes>
</generic:Obs>]
我想创建一个带有列 ['Date','Value'] 的 Pandas DF。
日期应该是 out of 的值,Value out of 。
当我运行代码时:<generic:ObsDimension value="2020-01-03"/>
<generic:ObsValue value="1.1147"/>
soup = BeautifulSoup(response.text, 'xml')
dates = soup.find_all("ObsDimension")
我得到的结果如下:
[<generic:ObsDimension value="2020-01-02"/>,
<generic:ObsDimension value="2020-01-03"/>,
<generic:ObsDimension value="2020-01-06"/>,
<generic:ObsDimension value="2020-01-07"/>,
<generic:ObsDimension value="2020-01-08"/>,
<generic:ObsDimension value="2020-01-09"/>]
但是我怎样才能获得日期和相应的值呢?
答:
0赞
Andrej Kesely
3/25/2023
#1
尝试:
import pandas as pd
from bs4 import BeautifulSoup
xml_doc = '''\
<data>
<generic:Obs>
<generic:ObsDimension value="2020-01-02"/>
<generic:ObsValue value="1.1193"/>
<generic:Attributes>
<generic:Value id="OBS_STATUS" value="A"/>
<generic:Value id="OBS_CONF" value="F"/>
</generic:Attributes>
</generic:Obs>
<generic:Obs>
<generic:ObsDimension value="2020-01-03"/>
<generic:ObsValue value="1.1147"/>
<generic:Attributes>
<generic:Value id="OBS_STATUS" value="A"/>
<generic:Value id="OBS_CONF" value="F"/>
</generic:Attributes>
</generic:Obs>
</data>'''
soup = BeautifulSoup(xml_doc, 'xml')
all_data = []
for obs in soup.select('Obs'):
date = obs.ObsDimension['value']
value = obs.ObsValue['value']
all_data.append({'Date': date, 'Value': value})
df = pd.DataFrame(all_data)
print(df)
指纹:
Date Value
0 2020-01-02 1.1193
1 2020-01-03 1.1147
评论
1赞
Michael Mueller
3/25/2023
非常感谢您提供这个漂亮而接近的例子。它帮助很大,提高了我的理解力。
评论