提取和替换json d

2024-10-01 15:43:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想替换并格式化json文件中列出内容的方式。 我得到的当前结构如下:

{"success": "OK", "message": "DEPARTURES_FOUND", "data": 
   {"departures": 
      [{"id": 58445, "itinerary_id": 1151, "codcorsa": "CASO1812271635NG", "ship_description": "Fast Ferry", "delay": null, "is_suspended": null, "notes": null, "type_id": 2, "departurePort": "CAPRI", "arrivalPort": "SORRENTO", "departureDate": "2018-12-27 16:35", "arrivalDate": "2018-12-27 16:55"},
      {"id": 58425, "itinerary_id": 1045, "codcorsa": "PRIC1812271620NS", "ship_description": "Fast Ferry", "delay": null, "is_suspended": null, "notes": null, "type_id": 2, "departurePort": "PROCIDA", "arrivalPort": "ISCHIA CASAMICCIOLA", "departureDate": "2018-12-27 17:05", "arrivalDate": "2018-12-27 17:15"}

我希望使用python删除第一行,并在以下结构中显示时间表。”_SUSPENDED“:null替换为“STATUS”:“active”

[{"DEPARTURE DATE": "2018-12-27 16:35", ARRIVAL DATE": "2018-12-27 16:55","DEPARTURE PORT": "Capri", "ARRIVAL PORT": "Sorrento", "STATUS": "active"}

Tags: idistypedescription结构nullnotesfast
2条回答

Python本机支持JSON,只需将import json添加到代码顶部,并使用json.loads()读取数据。你知道吗

举个例子:

with open("data_file.json", "r") as read_file:
    data = json.load(read_file)

或者下面是一些代码在修改您所描述的传入数据时的样子。请注意,json\u字符串将更改为加载的文件或API响应

#!python3

import json

def cleanText( text ):
    return text.lower().capitalize()

json_string = '''
{
    "success": "OK", 
    "message": "DEPARTURES_FOUND", 
    "data": {
        "departures": [
            {
                "id": 58445, 
                "itinerary_id": 1151,
                "codcorsa": "CASO1812271635NG", 
                "ship_description": "Fast Ferry", 
                "delay": null, 
                "is_suspended": null, 
                "notes": null, 
                "type_id": 2, 
                "departurePort": "CAPRI",
                "arrivalPort": "SORRENTO",
                "departureDate": "2018-12-27 16:35",
                "arrivalDate": "2018-12-27 16:55"
            },
            {
                "id": 58425, 
                "itinerary_id": 1045,
                "codcorsa": "PRIC1812271620NS",
                "ship_description": "Fast Ferry",
                "delay": null,
                "is_suspended": null,
                "notes": null,
                "type_id": 2,
                "departurePort": "PROCIDA",
                "arrivalPort": "ISCHIA CASAMICCIOLA",
                "departureDate": "2018-12-27 17:05",
                "arrivalDate": "2018-12-27 17:15"
            }
        ]
    }
}
'''

data = json.loads( json_string )
cleanData = []

for departure in data['data']['departures']:
    cleanData.append({
        "DEPARTURE DATE": departure['departureDate'], 
        "ARRIVAL DATE": departure['arrivalDate'],
        "DEPARTURE PORT": cleanText( departure['departurePort'] ),
        "ARRIVAL PORT": cleanText( departure['arrivalPort'] ),
        "STATUS": "suspended" if departure['is_suspended'] else "active"
    })

print( json.dumps( cleanData ) )

json库文档:https://docs.python.org/3.7/library/json.html

试试看

import json

json_data = """{
"success": "OK", 
"message": "DEPARTURES_FOUND", 
"data": {
    "departures": 
        [
            {
            "id": 58445, 
            "itinerary_id": 1151, 
            "codcorsa": "CASO1812271635NG", 
            "ship_description": "Fast Ferry",
            "delay": null, 
            "is_suspended": null, 
            "notes": null, 
            "type_id": 2, 
            "departurePort": "CAPRI",
            "arrivalPort": "SORRENTO", 
            "departureDate": "2018-12-27 16:35", 
            "arrivalDate": "2018-12-27 16:55"
            },
            {
            "id": 58425, 
            "itinerary_id": 1045, 
            "codcorsa": "PRIC1812271620NS", 
            "ship_description": "Fast Ferry",
            "delay": null, 
            "is_suspended": null, 
            "notes": null, 
            "type_id": 2, 
            "departurePort": "PROCIDA",
            "arrivalPort": "ISCHIA CASAMICCIOLA", 
            "departureDate": "2018-12-27 17:05", 
            "arrivalDate": "2018-12-27 17:15"
            }
        ]
    }
}"""

my_dict = json.loads(json_data)
result = []
for d in my_dict['data']['departures']:
    result.append(
        {
            "DEPARTURE DATE": d['departureDate'],
            "ARRIVAL DATE": d['arrivalDate'],
            "DEPARTURE PORT": d['departurePort'],
            "ARRIVAL PORT": d['arrivalPort'],
            "STATUS": "active" if not d['is_suspended'] else "inactive"
        }
    )

print(json.dumps(result))

相关问题 更多 >

    热门问题