用python从json数据库中提取特定字符串的最佳方法是什么?

2024-06-08 01:42:35 发布

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

我有这样一个大型数据库:

{'gifts': [{'id': 603988529, 'created_at': 1511248537, 'item_id': 11, 'item_type': 'Point::Stone', 'quantity': 1, 'description': 'Compensation for the incorrect item names and an incorrect banner description'}, {'id': 603988528, 'created_at': 1511248537, 'item_id': 932, 'item_type': 'SpecialItem', 'quantity': 2, 'description': '"Dokkan Thank-You Celebration" Login Bonus!'}, {'id': 603988527, 'created_at': 1511248537, 'item_id': 931, 'item_type': 'SpecialItem', 'quantity': 2, 'description': '"Dokkan Thank-You Celebration" Login Bonus!'}, {'id': 603988526, 'created_at': 1511248537, 'item_id': 1004, 'item_type': 'TrainingItem', 'quantity': 5, 'description': '"Dokkan Thank-You Celebration" Login Bonus!'}, {'id': 603988525, 'created_at': 1511248537, 'item_id': 1003, 'item_type': 'TrainingItem', 'quantity': 5, 'description': '"Dokkan Thank-You Celebration" Login Bonus!'}, {'id': 603988524, 'created_at': 1511248537, 'item_id': 1002, 'item_type': 'TrainingItem', 'quantity': 5, 'description': '"Dokkan Thank-You Celebration" Login Bonus!'}, {'id': 603988523, 'created_at': 1511248537, 'item_id': 1001, 'item_type': 'TrainingItem', 'quantity': 5, 'description': '"Dokkan Thank-You Celebration" Login Bonus!'}, {'id': 603988522, 'created_at': 1511248537, 'item_id': 1000, 'item_type': 'TrainingItem', 'quantity': 5, 'description': '"Dokkan Thank-You Celebration" Login Bonus!'}]}

我想写一些代码来提取“ID”之后的每个数字,并将其放入一个表中。你知道吗

这样我就可以得到[603988529,603988528….],直到所有的ID都被提取出来

谢谢


Tags: youidtypelogindescriptionitematquantity
2条回答

使用深度嵌套结构,^{}可以帮助您:

>>> from pprint import pprint
>>> pprint(data)
{'gifts': [{'created_at': 1511248537,
            'description': 'Compensation for the incorrect item names and an '
                           'incorrect banner description',
            'id': 603988529,
            'item_id': 11,
            'item_type': 'Point::Stone',
            'quantity': 1},
           {'created_at': 1511248537,
            'description': '"Dokkan Thank-You Celebration" Login Bonus!',
            'id': 603988528,
            'item_id': 932,
            'item_type': 'SpecialItem',
            'quantity': 2},
           {'created_at': 1511248537,
            'description': '"Dokkan Thank-You Celebration" Login Bonus!',
            'id': 603988527,
            'item_id': 931,
            'item_type': 'SpecialItem',
            'quantity': 2},
           {'created_at': 1511248537,
            'description': '"Dokkan Thank-You Celebration" Login Bonus!',
            'id': 603988526,
            'item_id': 1004,
            'item_type': 'TrainingItem',
            'quantity': 5},
           {'created_at': 1511248537,
            'description': '"Dokkan Thank-You Celebration" Login Bonus!',
            'id': 603988525,
            'item_id': 1003,
            'item_type': 'TrainingItem',
            'quantity': 5},
           {'created_at': 1511248537,
            'description': '"Dokkan Thank-You Celebration" Login Bonus!',
            'id': 603988524,
            'item_id': 1002,
            'item_type': 'TrainingItem',
            'quantity': 5},
           {'created_at': 1511248537,
            'description': '"Dokkan Thank-You Celebration" Login Bonus!',
            'id': 603988523,
            'item_id': 1001,
            'item_type': 'TrainingItem',
            'quantity': 5},
           {'created_at': 1511248537,
            'description': '"Dokkan Thank-You Celebration" Login Bonus!',
            'id': 603988522,
            'item_id': 1000,
            'item_type': 'TrainingItem',
            'quantity': 5}]}

所以。您的dict只有一个键:gifts。你知道吗

>>> pprint(data['gifts'])
[{'created_at': 1511248537,
  'description': 'Compensation for the incorrect item names and an incorrect '
                 'banner description',
  'id': 603988529,
  'item_id': 11,
  'item_type': 'Point::Stone',
  'quantity': 1},
 {'created_at': 1511248537,
  'description': '"Dokkan Thank-You Celebration" Login Bonus!',
  'id': 603988528,
  'item_id': 932,
  'item_type': 'SpecialItem',
  'quantity': 2},
 {'created_at': 1511248537,
  'description': '"Dokkan Thank-You Celebration" Login Bonus!',
  'id': 603988527,
  'item_id': 931,
  'item_type': 'SpecialItem',
  'quantity': 2},
 {'created_at': 1511248537,
  'description': '"Dokkan Thank-You Celebration" Login Bonus!',
  'id': 603988526,
  'item_id': 1004,
  'item_type': 'TrainingItem',
  'quantity': 5},
 {'created_at': 1511248537,
  'description': '"Dokkan Thank-You Celebration" Login Bonus!',
  'id': 603988525,
  'item_id': 1003,
  'item_type': 'TrainingItem',
  'quantity': 5},
 {'created_at': 1511248537,
  'description': '"Dokkan Thank-You Celebration" Login Bonus!',
  'id': 603988524,
  'item_id': 1002,
  'item_type': 'TrainingItem',
  'quantity': 5},
 {'created_at': 1511248537,
  'description': '"Dokkan Thank-You Celebration" Login Bonus!',
  'id': 603988523,
  'item_id': 1001,
  'item_type': 'TrainingItem',
  'quantity': 5},
 {'created_at': 1511248537,
  'description': '"Dokkan Thank-You Celebration" Login Bonus!',
  'id': 603988522,
  'item_id': 1000,
  'item_type': 'TrainingItem',
  'quantity': 5}]

您有一个dict列表,每个dict都有一个id键。使用列表理解,你就完成了:

>>> [d['id'] for d in data['gifts']]
[603988529, 603988528, 603988527, 603988526, 603988525, 603988524, 603988523, 603988522]

将字符串保存在文件中以将其放入变量中,就像询问API时得到的答复:

text_file = open("json.txt", "r")
array = text_file.read().replace('"', '\\"').replace("'", '"')
data  = json.loads(array)
idlist = []
for ids in data['gifts']:
    idlist.append(ids['id'])

print(idlist)

这将返回:

[603988529, 603988528, 603988527, 603988526, 603988525, 603988524, 603988523, 603988522]

相关问题 更多 >

    热门问题