如何遍历字典的嵌套列表?

时间:2021-01-19 16:20:57

标签: json python-3.x

我有以下 json 结构,根据我的理解,ndatas 是键,值作为列表返回。我想遍历每个值并使用正则表达式删除完整的字符串“\nCupdate:”。

{
"ndatas": [
{   
    "results": {
        "pnr_number": "PNR9087651232",
        "Reservation Date": "2020-09-29T10:33:55.000+0000",
        "Current State": "Waiting List",
        "BookingLogs": [
            {
                "pnr_category": "agent",
                "tstp": "2020-09-29T10:54:56.000+0000",
                "detail": "Booking Closed: Updated customer"
            },
            {
                "pnr_category": "Railway",
                "tstp": "2020-09-29T10:56:41.000+0000",
                "detail": "Tatkal tickets reservation is open"
            },
            {
                "pnr_category": "booking_via_irctc",
                "tstp": "2020-09-29T10:56:54.000+0000",
                "detail": "Info from Railway\nTrain: T12049 \nStatus: Started\nCupdate: Functioning on Time"
            },
            {
                "pnr_category": "booking_via_irctc",
                "tstp": "2020-09-30T14:44:34.000+0000",
                "detail": "Info from Railway\nTrain: T12049 \nStatus: Reached\nCupdate: On Time"
            },
            {
                "pnr_category": "agent",
                "tstp": "2020-10-01T07:12:20.000+0000",
                "detail": "All bookings Truncated"
            },
            {
                "pnr_category": "booking_via_irctc",
                "tstp": "2020-10-07T15:30:16.000+0000",
                "detail": "Info from Railway\nTrain: T12049 \nStatus: Cancelled\nCupdate: Heavy Rain"
            }
        ],
        "from": "Kolkatta",
        "to loc": "Mumbai"
    }   
},
{   
    "results": {
        "pnr_number": "PNR90876512322",
        "Reservation Date": "2020-09-29T10:33:55.000+0000",
        "Current State": "Waiting List",
        "BookingLogs": [
            {
                "pnr_category": "agent",
                "tstp": "2020-09-29T10:54:56.000+0000",
                "detail": "Booking Closed: Updated customer"
            },
            {
                "pnr_category": "Railway",
                "tstp": "2020-09-29T10:56:41.000+0000",
                "detail": "Tatkal tickets reservation is open"
            },
            {
                "pnr_category": "booking_via_irctc",
                "tstp": "2020-09-29T10:56:54.000+0000",
                "detail": "Info from Railway\nTrain: T12049 \nStatus: Started\nCupdate: Functioning on Time"
            },
            {
                "pnr_category": "booking_via_irctc",
                "tstp": "2020-09-30T14:44:34.000+0000",
                "detail": "Info from Railway\nTrain: T12049 \nStatus: Reached\nCupdate: Arrival Info: On Time.\n\nIRCTC"
            },
            {
                "pnr_category": "agent",
                "tstp": "2020-10-01T07:12:20.000+0000",
                "detail": "All bookings Truncated"
            },
            {
                "pnr_category": "booking_via_irctc",
                "tstp": "2020-10-07T15:30:16.000+0000",
                "detail": "Info from Railway\nTrain: T12049 \nStatus: Cancelled\nCupdate: Heavy Rain"
            }
        ],
        "from": "Kolkatta",
        "to loc": "Mumbai"
    }   
}
]
}

我尝试过类似以下的方法,但正则表达式似乎没有效果。我错过了什么?

import json
import re

try:
    with open(r'C:\Users\maryo\Desktop\responses.json', encoding='utf-8') as f:
         data = json.load(f)
    print("This is a valid JSON File")

except ValueError as e:
    print("This is an invalid JSON File")

for x in data['ndatas']:
    regex = re.sub(r'\\nCupdate.*', r'"', str(x))

print(data['ndatas'])

0 个答案:

没有答案