来自url的python字典
我试图从国家气象局收集天气数据,并将其读入python脚本。它们提供了一个JSON返回,但它们也提供了另一个返回,它不是格式化的JSON,但有更多的变量(我想要)。这组数据看起来像是被格式化为python字典。看起来是这样的:来自url的python字典,python,url,dictionary,Python,Url,Dictionary,我试图从国家气象局收集天气数据,并将其读入python脚本。它们提供了一个JSON返回,但它们也提供了另一个返回,它不是格式化的JSON,但有更多的变量(我想要)。这组数据看起来像是被格式化为python字典。看起来是这样的: stations={ KAPC: { 'id':'KAPC', 'stnid':'92', 'name':'Napa, Napa County Airport', 'elev':'33', 'latitude':'38.20750', 'longitude':'-122.
stations={
KAPC:
{
'id':'KAPC',
'stnid':'92',
'name':'Napa, Napa County Airport',
'elev':'33',
'latitude':'38.20750',
'longitude':'-122.27944',
'distance':'',
'provider':'NWS/FAA',
'link':'http://www.wrh.noaa.gov/mesowest/getobext.php?sid=KAPC',
'Date':'24 Feb 8:54 am',
'Temp':'39',
'TempC':'4',
'Dewp':'29',
'Relh':'67',
'Wind':'NE@6',
'Direction':'50&#176',
'Winds':'6',
'WindChill':'35',
'Windd':'50',
'SLP':'1027.1',
'Altimeter':'30.36',
'Weather':'',
'Visibility':'10.00',
'Wx':'',
'Clouds':'CLR',
[...]
所以,对我来说,它似乎有一个定义的变量stations,相当于一个包含stations及其变量的字典字典。我的问题是如何访问这些数据。现在我正在尝试:
import urllib
response = urrllib.urlopen(url)
r = response.read()
如果我尝试使用JSON模块,它显然会失败,因为这不是JSON。如果我只是尝试读取文件,它会返回一个长字符串。对如何提取这些数据有什么建议吗?如果可能的话,我只想得到url返回中的字典,即
stations={…}
谢谢 请看,据我从问题中推断,我假设您有文本形式的数据,而这些数据不是有效的JSON数据,因此假设我们有这样一个文本:line=“stations={'KAPC':{'id':'KAPC','stnid':'92','name':'Napa,Napa县机场'}”
(比如说),然后,我们可以通过在=
符号处拆分字典来提取字典,然后使用eval()
方法使用所需数据初始化字典变量
dictionary_text = line.split("=")[1]
python_dictionary = eval(dictionary_text)
print python_dictionary
>>> {'KAPC': {'id': 'KAPC', 'name': 'Napa, Napa County Airport', 'stnid': '92'}}
python_字典
现在的行为类似于一个包含键、值对的python字典,您可以使用python_字典[“KAPC”][“id”]访问任何属性
您能否提供一个示例URL,返回您要解析的数据,以便我们查看完整的输出?您可以使用RegExp…获取所需的数据。但也可以在JSON库的帮助下完成。这是一个示例URL…这是一个非常优雅的解决方案,但我发现了两个问题。一个是站点id,在本例中,KAPC
不在引号中,因此这可能引发错误,因为它没有定义(?)。而且,这些记录还包含一个URL字段,其中包含一个sid=
请求,当尝试拆分(“=”
)时,该请求会把一切都搞糟。