Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.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 如何从这个特定的JSON文件示例中迭代和提取数据_Python_Json_Extraction - Fatal编程技术网

Python 如何从这个特定的JSON文件示例中迭代和提取数据

Python 如何从这个特定的JSON文件示例中迭代和提取数据,python,json,extraction,Python,Json,Extraction,我试图用Python从JSON文件中提取数据 主要是,我想从“技术”部分提取日期和时间,将其放在数据帧的一列中,以及提取“AKG”编号并将其放在数据帧的第二列中。是的,我看过类似的问题,但这个问题是不同的。谢谢你的帮助 下面是JSON文件的downNdirty示例: { 'Meta Data': { '1: etc' '2: etc'}, 'Technicals': { '2017-05-04 12:00': { 'AKG': '6

我试图用Python从JSON文件中提取数据

主要是,我想从“技术”部分提取日期和时间,将其放在数据帧的一列中,以及提取“AKG”编号并将其放在数据帧的第二列中。是的,我看过类似的问题,但这个问题是不同的。谢谢你的帮助

下面是JSON文件的downNdirty示例:

    { 'Meta Data': { '1: etc'
                     '2: etc'},
      'Technicals': { '2017-05-04 12:00': {  'AKG': '64.8645'},
                      '2017-05-04 12:30': {  'AKG': '65.7834'},
                      '2017-05-04 13:00': {  'AKG': '63.2348'}}}
正如你所看到的,让我感到困惑的是,随着时间的推移,日期保持不变AKG’永远不会改变,但数字会改变。下面是我一直在使用的一些相关代码。我可以提取日期和时间,但我似乎无法获得AKG的数字。注意,我不需要“AKG”,只需要号码

我要提到的是:我正在创建一个数据框,因为在使用数据创建绘图时,这将更容易使用…对吗?我愿意接受一系列的列表等等,或者任何更简单的东西,如果这最终能帮助我完成情节的话

    akg_time = []
    akg_akg = []
    technicals = akg_data['Technicals']  #akg_data is the entire json file

    for item in technicals:  #this works
         akg_time.append(item)

    for item in technicals:  #this not so much
         symbol = item.get('AKG')
         akg_akg.append(symbol)

    pp.pprint(akg_akg)
    error: 'str' object has no attribute 'get'

你几乎成功了。你甚至不需要第二个循环。您可以将
akg
值附加到第一个值中:

for key in technicals: # renaming to key because that is a clearer name
     akg_time.append(key)
     akg_akg.append(technicals[key]['AKG'])

您的错误是因为您认为
(或
)是dict,而不是dict。它只是一个字符串,是
technicals
字典的键之一,因此实际上需要使用
symbols=technicals[key].get('AKG')

你就快拿到了。你甚至不需要第二个循环。您可以将
akg
值附加到第一个值中:

for key in technicals: # renaming to key because that is a clearer name
     akg_time.append(key)
     akg_akg.append(technicals[key]['AKG'])

您的错误是因为您认为
(或
)是dict,而不是dict。它只是一个字符串,是
technicals
字典的键之一,因此实际上需要使用
symbols=technicals[key].get('AKG')

尽管Coldspeed的答案是正确的:当你有一个字典时,你会循环通过键和值,如下所示:

Python 3

for key,value in technicals.items():
     akg_time.append(key)
     akg_akg.append(value["akg"])
Python 2

for key,value in technicals.iteritems():
     akg_time.append(key)
     akg_akg.append(value["akg"])

尽管Coldspeed的答案是正确的:当你有一个字典时,你会循环通过键和值,如下所示:

Python 3

for key,value in technicals.items():
     akg_time.append(key)
     akg_akg.append(value["akg"])
Python 2

for key,value in technicals.iteritems():
     akg_time.append(key)
     akg_akg.append(value["akg"])

我知道这将是最简单的答案。非常感谢。也许应该上床睡觉,明天再看一遍。“技术[关键]”是我一直缺少的。哦,谢谢你对“关键”重命名的建议。这确实更有意义,而且更容易遵循代码的逻辑。@PatrickGalt很乐意提供帮助。别忘了,如果这个答案有用的话,你总是可以接受的。干杯:)你能投票支持我的问题吗?我在“问题炼狱”中是因为一些挫伤的自尊心…也就是说,他们没有继续前进,而是决定对我的问题(前一个问题)发牢骚和牢骚…这个问题已经很轻松地得到了回答。谢谢我知道这将是最简单的答案。非常感谢。也许应该上床睡觉,明天再看一遍。“技术[关键]”是我一直缺少的。哦,谢谢你对“关键”重命名的建议。这确实更有意义,而且更容易遵循代码的逻辑。@PatrickGalt很乐意提供帮助。别忘了,如果这个答案有用的话,你总是可以接受的。干杯:)你能投票支持我的问题吗?我在“问题炼狱”中是因为一些挫伤的自尊心…也就是说,他们没有继续前进,而是决定对我的问题(前一个问题)发牢骚和牢骚…这个问题已经很轻松地得到了回答。谢谢记住这是在内存中创建一个新的列表,复制所有的键和值,所以它肯定没有在键上迭代那么有效。等等?这里分配了一个二元数:technicals=akg_数据['technicals']。这真的会创建一个新的列表吗?毫无意义。我遗漏了什么?只是分配了参考。它是O(1)。我的意思是
technicals.items()
。记住这是在内存中创建一个新列表,复制所有的键和值,所以它肯定没有在键上迭代那么有效。等等?这里分配了一个二元数:technicals=akg_数据['technicals']。这真的会创建一个新的列表吗?毫无意义。我遗漏了什么?只是分配了参考。它是O(1)。我的意思是
technicals.items()