当前位置: 首页 > 面试题库 >

使用python从JSON文件中提取部分数据

苏昂雄
2023-03-14
问题内容

我一直在尝试仅从JSON文件中提取某些数据。我设法将JSON解码并将所需的数据放入python
dict中。当我打印出字典时,它会显示所有所需的数据,但是当我尝试将字典写入新文件时,只会写入最后一个对象。我不明白的一件事也是为什么当我打印字典时会得到多个字典对象而不是我期望的1。

我的代码:

import json
input_file=open('json.json', 'r')
output_file=open('test.json', 'w')
json_decode=json.load(input_file)
for item in json_decode:
    my_dict={}
    my_dict['title']=item.get('labels').get('en').get('value')
    my_dict['description']=item.get('descriptions').get('en').get('value')
    my_dict['id']=item.get('id')
    print my_dict
back_json=json.dumps(my_dict, output_file)
output_file.write(back_json)
output_file.close()

我的json.json文件:

[
{"type":"item","labels":{"en":{"language":"en","value":"George Washington"}},"descriptions":{"en":{"language":"en","value":"American politician, 1st president of the United States (in office from 1789 to 1797)"}},"id":"Q23"},
{"type":"item","aliases":{"en":[{"language":"en","value":"Douglas Noël Adams"},{"language":"en","value":"Douglas Noel Adams"}]},"labels":{"en":{"language":"en","value":"Douglas Adams"}},"descriptions":{"en":{"language":"en","value":"English writer and humorist"}},"id":"Q42"},
{"type":"item","aliases":{"en":[{"language":"en","value":"George Bush"},{"language":"en","value":"George Walker Bush"}]},"labels":{"en":{"language":"en","value":"George W. Bush"}},"descriptions":{"en":{"language":"en","value":"American politician, 43rd president of the United States from 2001 to 2009"}},"id":"Q207"},
{"type":"item","aliases":{"en":[{"language":"en","value":"Velázquez"},{"language":"en","value":"Diego Rodríguez de Silva y Velázquez"}]},"labels":{"en":{"language":"en","value":"Diego Velázquez"}},"descriptions":{"en":{"language":"en","value":"Spanish painter who was the leading artist in the court of King Philip IV"}},"id":"Q297"},
{"type":"item","labels":{"en":{"language":"en","value":"Eduardo Frei Ruiz-Tagle"}},"descriptions":{"en":{"language":"en","value":"Chilean politician and former President"}},"id":"Q326"}
]

打印my_dict输出:

{'id': u'Q23', 'description': u'American politician, 1st president of the United States (in office from 1789 to 1797)', 'title': u'George Washington'}
{'id': u'Q42', 'description': u'English writer and humorist', 'title': u'Douglas Adams'}
{'id': u'Q207', 'description': u'American politician, 43rd president of the United States from 2001 to 2009', 'title': u'George W. Bush'}
{'id': u'Q297', 'description': u'Spanish painter who was the leading artist in the court of King Philip IV', 'title': u'Diego Vel\xe1zquez'}
{'id': u'Q326', 'description': u'Chilean politician and former President', 'title': u'Eduardo Frei Ruiz-Tagle'}

在文件test.json中输出:

{"id": "Q326", "description": "Chilean politician and former President", "title": "Eduardo Frei Ruiz-Tagle"}

我也想知道为什么字典会输出’title’:u’DiegoVel\xe1zquez’,但是如果我去打印my_dict.values()[2],我会把名字正常地写成DiegoVelázquez。

非常感谢


问题答案:

您的代码为每个对象创建新的字典对象,其中包括:

my_dict={}

此外,它会覆盖变量的先前内容。 m_dict中的 字典将从内存中删除。 __

尝试在for循环之前创建一个列表,并将结果存储在那里。

result = []
for item in json_decode:
    my_dict={}
    my_dict['title']=item.get('labels').get('en').get('value')
    my_dict['description']=item.get('descriptions').get('en').get('value')
    my_dict['id']=item.get('id')
    print my_dict
    result.append(my_dict)

最后,将结果写入输出:

back_json=json.dumps(result, output_file)

打印字典对象旨在通过显示数据类型来帮助开发人员。在u’Diego Vel \ xe1zquez’中, u
开头表示Unicode对象(字符串)。打印使用对象时,将根据操作系统中当前的语言设置对其进行解码。



 类似资料:
  • 问题内容: 我试图提取具有特定文本文件之间的文本: 然后将其转储到文本文件中,以便 谢谢您的帮助。 问题答案: 这对我来说足够好了。您的样本数据在一个名为“ data.txt”的文件中,输出将进入“ result.txt”

  • 我正在寻找一个python库,能够提取一个mp3的实际数据(实际的声音/声音我们听)。我希望能够使用数据与另一个mp3文件进行比较,而不影响比特率/编码的过程。我该怎么做?

  • 问题内容: 我想使用Python从HTML文件中提取文本。如果要从浏览器复制文本并将其粘贴到记事本中,我希望得到的输出基本上相同。 我想要比使用正则表达式更强大的功能,而正则表达式可能在格式不正确的HTML上失败。我见过很多人推荐美丽汤,但是使用它时遇到了一些问题。例如,它拾取了不需要的文本,例如JavaScript源。此外,它没有解释HTML实体。例如,我希望' 在HTML源代码中转换为

  • 问题内容: 我知道那里也有类似的问题,但是我找不到能回答我的祷告的东西。我需要的是一种从MS-Word文件访问某些数据并将其保存在XML文件中的方法。在python- docx 上阅读无济于事,因为它似乎只允许一个人写入Word文档,而不是阅读。要准确呈现我的任务(或我选择如何执行任务的方式):我想在文档中搜索关键字或短语(文档包含表格),并从关键字/短语所在的表格中提取文本数据找到了。有人有什么

  • 问题内容: 我有点头疼,只是因为一个简单,易于表达的陈述使我的脸上有些错误。 我有一个名为的文件,如下所示: 我现在想读取文件。我发现了以下这些语句,但是不起作用: 控制台上显示的错误是这样的: 已编辑 从更改为 并得到了: 问题答案: 该方法( 中没有 )可以直接读取文件: 你正在使用方法,该方法仅用于字符串参数。 编辑:新消息是一个完全不同的问题。在这种情况下,该文件中存在一些无效的。为此,我

  • 问题内容: 我正在寻找有关如何使用带有Python的PDFMiner从PDF文件提取文本的文档 或 示例。 看来PDFMiner更新了他们的API,我发现的所有相关示例都包含过时的代码(类和方法已更改)。我发现的那些使从PDF文件提取文本的任务更加容易的库正在使用旧的PDFMiner语法,因此我不确定如何执行此操作。 照原样,我只是在查看源代码,以查看是否可以解决。 问题答案: 这是一个使用当前版