Python通过自定义函数解析JSON数据

2024-04-20 12:38:10 发布

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

我有一个JSON Text File

在JSON文本文件中,有id、title、context、question、is\u impossible、answer\u start和text等列

我试图把它读入一个熊猫数据框。我不熟悉Python和JSON。所以我们来试试函数定义

这是我的密码

def squad_json_pd_df(json_dict):
    mylistsize = len((list(json_normalize(json_dict,'data')['title'])))
    row = []
    for i in range(0,mylistsize):
        data = [c for c in json_dict['data']][i]
        df = pd.DataFrame()
        data_paragraphs = data['paragraphs']
        mytitle = data['title']
        for article_dict in data_paragraphs:
            for answers_dict in article_dict['qas']:
                for answer in answers_dict['answers']:
                    row.append((
                                answers_dict['id'],
                                mytitle,
                                article_dict['context'], 
                                answers_dict['question'], 
                                answers_dict['is_impossible'],
                                answer['answer_start'],
                                answer['text']
                               ))
            df = pd.concat([df, pd.DataFrame.from_records(row, columns=['id', 'title','context', 'question','is_impossible', 'answer_start', 'answer'])], axis=0, ignore_index=True)
            df.drop_duplicates(inplace=True)
    return df

with open(dev_datapath) as file:
    dev_dict = json.load(file)
    dev_df = squad_json_pd_df(dev_dict)

所以这里的问题是-is\u Impossible列中有true和false两个值(当我在文本文件中看到它时)。但是在我加载到Pandas数据帧之后,我只能看到错误的记录

我对这个问题的理解是-对于真实记录,JSON文件结构可能不同,我在Python中没有正确地解析它

不可能的错误结构如下所示

IS_Impossible False Structure

真正的结构如下所示

Is_Impossible True Structure


Tags: answerindevidjsondffordata
1条回答
网友
1楼 · 发布于 2024-04-20 12:38:10

你没有得到“True”的原因是因为它们在一个不同的json标签下,它们在“似是而非的答案”下,而不是我认为的答案下。在您的代码中,answers\u dict仅从json的“answers”标记中提取,因此您实际上从未在似是而非的\u answers列表上循环,其中标记将设置为True

相关问题 更多 >