【问题标题】:Python script to filter nested data from json file用于从 json 文件中过滤嵌套数据的 Python 脚本
【发布时间】:2021-04-24 01:24:56
【问题描述】:

我正在尝试从嵌套的 JSON 文件中抓取数据,我的目标是在特定的嵌套中提取 "QUANTITE" 值。 JSON 文件有重复的模式:

    "T_INDICATEUR_QUANTITEs": [
        {
            "T_INDICATEUR_NORMEs": null,
            "T_PHASE_NORMEs": null,
            "ID_INDICATEUR_QUANTITE": 706222,
            "ID_PRODUIT": 5881,
            "QUANTITE": 18.8,
            "ID_INDICATEUR_NORME": 32,
            "ID_PHASE_NORME": 23
        },
        {
            "T_INDICATEUR_NORMEs": null,
            "T_PHASE_NORMEs": null,
            "ID_INDICATEUR_QUANTITE": 706223,
            "ID_PRODUIT": 5881,
            "QUANTITE": 20.6,
            "ID_INDICATEUR_NORME": 32,
            "ID_PHASE_NORME": 39
        },
        {
            "T_INDICATEUR_NORMEs": null,
            "T_PHASE_NORMEs": null,
            "ID_INDICATEUR_QUANTITE": 706224,
            "ID_PRODUIT": 5881,
            "QUANTITE": 0.191,
            "ID_INDICATEUR_NORME": 32,
            "ID_PHASE_NORME": 24
        },

每个"QUANTITE" 值都有一对特定的"ID_INDICATEUR_NORME","ID_PHASE_NORME"

我如何获得特定情侣"ID_INDICATEUR_NORME","ID_PHASE_NORME""QUANTITE" 值?

提前致谢!

Link of the complete file

【问题讨论】:

    标签: python json python-3.x web-scraping


    【解决方案1】:

    下面是最简单的方法,

    import json
    
    # Loding the data
    with open('#File path or website URL here','r') as file:
        content = file.read()
    
    # Converting json_data to python dictionary format
    json_data = json.loads(content)
    
    quantite = -1 # -1 for not found case
    for data in json_data['T_INDICATEUR_QUANTITEs']:
        
        # Checking for specific pair
        if data['ID_INDICATEUR_NORME'] == x and data['ID_PHASE_NORME'] == y:
            quantite = data['QUANTITE'] 
            break
    
    print(f"QUANTITE value is {quantite}")
    

    这里的xy 是您的ID_INDICATEUR_NORMEID_PHASE_NORME 的具体值。

    如果您的特定对匹配,则此 sn-p 将返回 QUANTITE 值,否则它将返回 -1

    【讨论】:

    • 哦,谢谢!我尝试了这种方法,但我是 Python 的初学者,所以我有点挣扎。
    • 它对我帮助很大!再次感谢!
    • 不客气!
    • 您能否编辑和扩展您的原始问题以进一步解释它?告诉我什么问题和你想要什么。
    • 很抱歉给您带来不便,这只是我的 dict 变量声明的问题,现在可以使用了。 :)
    【解决方案2】:

    首先导入json 然后 dict = json.loads(data) 解析“QUANTITE” 所有代码都是这样的:

    import json
    
    data = '{"T_INDICATEUR_QUANTITEs": [ \
            { \
                "T_INDICATEUR_NORMEs": null,\
                "T_PHASE_NORMEs": null, \
                "ID_INDICATEUR_QUANTITE": 706222,\
                "ID_PRODUIT": 5881,\
                "QUANTITE": 18.8,\
                "ID_INDICATEUR_NORME": 32,\
                "ID_PHASE_NORME": 23\
            },\
            {\
                "T_INDICATEUR_NORMEs": null,\
                "T_PHASE_NORMEs": null,\
                "ID_INDICATEUR_QUANTITE": 706223,\
                "ID_PRODUIT": 5881,\
                "QUANTITE": 20.6,\
                "ID_INDICATEUR_NORME": 32,\
                "ID_PHASE_NORME": 39\
            },\
            {\
                "T_INDICATEUR_NORMEs": null,\
                "T_PHASE_NORMEs": null,\
                "ID_INDICATEUR_QUANTITE": 706224,\
                "ID_PRODUIT": 5881,\
                "QUANTITE": 0.191,\
                "ID_INDICATEUR_NORME": 32,\
                "ID_PHASE_NORME": 24\
            }\
        ]\
    }'
    
    dict = json.loads(data)
    
    dataList = dict["T_INDICATEUR_QUANTITEs"]
    
    for data in dataList:
        print(data["QUANTITE"])
    

    结果:

    18.8
    20.6
    0.191
    

    【讨论】:

      【解决方案3】:

      您可以轻松做到这一点。

      with open("a.json") as jsonfile: # load process
         data = jsonfile.read() # read it up
      load = json.load(data) # and extract to each dict
      
      # using
      load["Data that you want"]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-03
        • 2014-11-10
        相关资源
        最近更新 更多