在 Python 中从 JSON 构建表

我正在尝试使用 Python 将 JSON 文本转换为标准数据表,但是我对此几乎没有经验,当我在线搜索解决方案时,我发现我很难实现任何解决方案。


我试图使用ast.literal_eval但一直收到我无法解决的错误。


raise ValueError('畸形节点或字符串:' + repr(node))


JSON:


{

    "duration": 202.0,

    "session_info": {

        "activation_uuid": "ab90d941-df9d-42c5-af81-069eb4f71515",

        "launch_uuid": "11101c41-2d79-42cc-bf6d-37be46802fc8"

    },

    "timestamp": "2019-01-18T11:11:26.135Z",

    "source_page_view_reference": {

        "page_uuid": "1bede017-7b77-461d-82ef-a6bbcfdae4d7",

        "page_id": "/group/More",

        "page_name": "More",

        "view_uuid": "9580f3c5-1116-432a-83bc-9d0b5337f661",

        "page_type": "Native"

    },

    "analytics_sdk": {

        "component_id": "datasdk",

        "component_version": "1.0.52"

    },

    "treatment_id": "mockTreat",

    "client_event_id": "2b3cd878-6932-410b-b1ad-bc40ae888fdc",

    "campaign_id": "mockCamp"

}

所需的表格格式(修剪值以适合显示目的):


Duration | session_info.activation_uuid | session_info.launch_uuid | timestamp  | etc

   202.0 |  ab90d941-df9d-42c5-af81-069 | 11101c41-2d79-42cc-bf6d- | 2019-01-18 | etc

任何直接的帮助,或者只是学习这方面的良好资源,将不胜感激。我很难找到直接与我想要从一系列类似的 JSON 中创建表格的内容相关的项目。


青春有我
浏览 178回答 2
2回答

拉莫斯之舞

pandas几乎总是在与表交互时使用。它可以解析字典In [0]: import pandasIn [1]: from pandas.io.json import json_normalizeIn [2]: d = {'duration': 202.0,   ...:  'session_info':   ...:     {'activation_uuid': 'ab90d941-df9d-42c5-af81-069eb4f71515',   ...:      'launch_uuid': '11101c41-2d79-42cc-bf6d-37be46802fc8'},   ...:  'timestamp': '2019-01-18T11:11:26.135Z',   ...:  'source_page_view_reference':   ...:     {'page_uuid': '1bede017-7b77-461d-82ef-a6bbcfdae4d7',   ...:      'page_id': '/group/More',   ...:      'page_name': 'More',   ...:      'view_uuid': '9580f3c5-1116-432a-83bc-9d0b5337f661',   ...:      'page_type': 'Native'},   ...:  'analytics_sdk':   ...:     {'component_id': 'datasdk',   ...:      'component_version': '1.0.52'},   ...:  'treatment_id': 'mockTreat',   ...:  'client_event_id': '2b3cd878-6932-410b-b1ad-bc40ae888fdc',   ...:  'campaign_id': 'mockCamp'}In [4]: json_normalize(d)Out[4]:  analytics_sdk.component_id analytics_sdk.component_version campaign_id                       client_event_id  duration  ... source_page_view_reference.page_type  source_page_view_reference.page_uuid  source_page_view_reference.view_uuid                 timestamp treatment_id0                    datasdk                          1.0.52    mockCamp  2b3cd878-6932-410b-b1ad-bc40ae888fdc     202.0  ...                               Native  1bede017-7b77-461d-82ef-a6bbcfdae4d7  9580f3c5-1116-432a-83bc-9d0b5337f661  2019-01-18T11:11:26.135Z    mockTreat[1 rows x 14 columns]要将 JSON 字符串加载到字典中,请使用 json.loads或使用 pandas.read_json

翻翻过去那场雪

您也可以通过以下方式进行,这类似于 pandas 内部所做的事情。import jsonjsondata='''{    "duration": 202.0,    "session_info": {        "activation_uuid": "ab90d941-df9d-42c5-af81-069eb4f71515",        "launch_uuid": "11101c41-2d79-42cc-bf6d-37be46802fc8"    },    "timestamp": "2019-01-18T11:11:26.135Z",    "source_page_view_reference": {        "page_uuid": "1bede017-7b77-461d-82ef-a6bbcfdae4d7",        "page_id": "/group/More",        "page_name": "More",        "view_uuid": "9580f3c5-1116-432a-83bc-9d0b5337f661",        "page_type": "Native"    },    "analytics_sdk": {        "component_id": "datasdk",        "component_version": "1.0.52"    },    "treatment_id": "mockTreat",    "client_event_id": "2b3cd878-6932-410b-b1ad-bc40ae888fdc",    "campaign_id": "mockCamp"}'''data=json.loads(jsondata)table=[[],[]]def dictList(d, column_name=''):    for k, v in d.items():        if isinstance(v, dict):            dictList(v, column_name=k)            continue        if column_name:            column_name+='.'        column_name +=k        table[0].append(column_name)        table[1].append(v)dictList(data)for row in table:    print (row)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go