我已经设法使用xmltodict从在线XML文档中获得了所需的数据(它非常用户友好,而且我喜欢它的直观性)。但是,因为数据是作为字典解析的,所以我在以所需的方式处理它时遇到了麻烦。我需要将时间更改为%Y-%m-%d %H:%M:%S格式,并将这三列移动到以制表符分隔的文本文件中。以下是我的代码,它不起作用,但给出了我想要做什么的想法:
import datetime as dt
import numpy as np
url='http://forecast.weather.gov/MapClick.php?lat=47.6062&lon=-122.3321&FcstType=digitalDWML'
r = requests.get(url)
import xmltodict
result = xmltodict.parse(r.text)
data = []
d = result['dwml']['data']['time-layout']['start-valid-time']
d = dt.datetime.strptime(d,'%Y-%m-%dT%H:%M:%S')
#print d
pop = result['dwml']['data']['parameters']['probability-of-precipitation']['value']
#print("probability-of-precipitation =", pop)
hqpf = result['dwml']['data']['parameters']['hourly-qpf']['value']
#print("hourly-qpf =", hqpf)
data = data.append([d,
pop,
hqpf])
with open ('KBFI_2.txt','w') as file:
file.writelines('\t'.join(map(str,i)) + '\n' for i in data)有没有办法可以改变字典的格式,这样我就可以操纵它了??对Python和XML解析非常陌生。
发布于 2017-11-02 00:04:37
您可以自由地操作字典,而无需更改其格式。这只是你的代码中的几个错误,阻碍了你正确地完成它。要更改字典的值,您需要直接将新值分配给key:
d = result['dwml']['data']['time-layout']['start-valid-time']
result['dwml']['data']['time-layout']['start-valid-time'] = dt.datetime.strptime(d, '%Y-%m-%dT%H:%M:%S')第二个错误是list.append返回None,您将其赋值回list变量。只管去做
data.append([d, pop, hqpf]) # without data=你就会好起来的
https://stackoverflow.com/questions/31790450
复制相似问题