Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
来自url的python字典_Python_Url_Dictionary - Fatal编程技术网

来自url的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.

我试图从国家气象局收集天气数据,并将其读入python脚本。它们提供了一个JSON返回,但它们也提供了另一个返回,它不是格式化的JSON,但有更多的变量(我想要)。这组数据看起来像是被格式化为python字典。看起来是这样的:

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=
请求,当尝试
拆分(“=”
)时,该请求会把一切都搞糟。