"KeyE的不确定推理"

2024-06-07 11:24:49 发布

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

我不知道为什么我的代码中有一个KeyError。我一直在想办法解决这个问题,但是我被卡住了,我盯着屏幕看太久了。在

在hiev\u预期_脾气暴躁文件夹容器此事件

活动:

{"marker": {"event_id": "c8d68b0f-75ab-4973-bc60-07f17769e249", "table": "jabba_events", "db": "idea-jabba-applicationData", "time_uuid": "e60cfa50-a98c-44f9-bc6e-68f772acdf88"}, "event": {"experiment_id": "6b8d51b7-51f9-4308-a7c9-2c0b665bb869", "user_id": "a1e971d1-afd2-4ed0-bd06-6ccfc21cfd65", "event_type": "BINARY_ACTION", "event_name": "FileIOSave", "event_payload": "sku=Home,release=2014.11.14.508,FileFormat=Container,TimeInMilliSeconds=5663,PrinterReturnId={83D02DEA-E804-4780-9D83-E2400A7D8AF7},", "bucket": "red", "time_uuid": "e60cfa50-a98c-44f9-bc6e-68f772acdf88", "experiment_name": "Container", "trinity_timestamp": 1428947274912, "context": "PROD", "application_name": "CTG", "jabba_timestamp": null, "event_value": ""}}

我的代码将加载此事件并执行代码中的逻辑并捕获KeyError

^{pr2}$

有了这个事件,程序运行良好

活动:

{"marker": {"event_id": "9ca44622-33cb-43fa-94fc-9fa4af77c86e", "table": "jabba_assignments", "db": "idea-jabba-applicationData", "time_uuid": "88009235-6da2-4bc6-b899-73f1d47a6734"}, "event": {"context": "PROD", "put_assignment": "true", "segmentation_profile": "{isNewCompany=false}", "experiment_id": "38c7ef58-62ea-434c-a4b8-30dcbab54282", "bucket": "B", "user_id": 769200395, "assignment_status": "EXISTING_ASSIGNMENT", "experiment_name": "ty14_1068", "page_name": "TTOInit", "trinity_timestamp": 1428947323686, "time_uuid": "88009235-6da2-4bc6-b899-73f1d47a6734", "ignore_sampling_percent": "false", "application_name": "GBODev", "jabba_timestamp": 1428947355740, "create_assignment": "false"}}

没有try catch这就是回溯

Traceback (most recent call last):
  File "/Users/bli1/Development/QE/TrinityTestFramework/poc/tests/out/hive_expected.py", line 56, in <module>
    output.write(str(json_event["event"][key]))
KeyError: '{'

您可以在我的intellij解释器中看到key的值是{

enter image description here

代码:

with open("hive_expected_testy.out", "r") as f:
    with open("mans.out", "w") as output:
        for event in f:
            try:
                json_event = json.loads(event)
                # print(len(json_event["event"]))
                # for i in json_event:
                table = json_event["marker"]["table"]
                if table == "jabba_assignments":
                    for key in assignment:
                        # pdb.set_trace()
                        output.write(str(json_event["event"][key]))
                        output.write("\t")
                    output.write("\n")
                if table == "jabba_events":
                    for key in event:
                        output.write(str(json_event["event"][key]))
                        output.write("\t")
                    output.write("\n")
                if table is None:
                    output.write("No table assigned: {}".format(json_event))
                    output.write("\n")
            except KeyError as e:
                print(event)
                print(e)

assignment = [
    "trinity_timestamp",
    "user_id",
    "application_name",
    "experiment_name",
    "context",
    "create_assignment",
    "put_assignment",
    "ignore_sampling_percent",
    "segmentation_profile",
    "experiment_id",
    "page_name",
    "assignment_status",
    "bucket",
    "time_uuid",
    "jabba_timestamp"
]

event = [
    "trinity_timestamp",
    "application_name ",
    "experiment_name ",
    "user_id",
    "bucket",
    "jabba_timestamp",
    "event_type",
    "event_name",
    "event_payload",
    "time_uuid ",
    "experiment_id",
    "event_value",
    "context"
]

Tags: keynameineventidjsonoutputuuid
1条回答
网友
1楼 · 发布于 2024-06-07 11:24:49

错误在以下行:

for key in event:

因为event在此上下文中绑定到字符串

^{pr2}$

,我们按顺序遍历它的字符,{先是",然后是{},但当我们试图在不包含该字符的dict中查找{时,我们以KeyError停止。在

相关问题 更多 >

    热门问题