如何使用Python在.json文件中递增'tokenId'值?

vktxenjb  于 2023-06-07  发布在  Python
关注(0)|答案(2)|浏览(136)

我有一个.json文件,但我把tokenId编号错了。我需要将“tokenId”的所有值增加1个数字

[
    {
        "Background": "Red",
        "Body": "Tunn",
        "Hat": "Bambu",
        "Outfit": "Pirate",
        "Expression": "Sad",
        "Accessory": "Rifle",
        "tokenId": 0
    },
    {
        "Background": "Lilac",
        "Body": "Tunn",
        "Hat": "Bicorn",
        "Outfit": "Pirate",
        "Expression": "Angry",
        "Accessory": "Balloons",
        "tokenId": 1
    },

          ...
    
    {
        "Background": "Green",
        "Body": "Tunn",
        "Hat": "Bicorn",
        "Outfit": "Pirate",
        "Expression": "Sad",
        "Accessory": "Balloons",
        "tokenId": 3000
    },

用Python可以做到这一点吗?我用Python创建了这个.json文件。
我尝试了这个代码,但我得到一个错误

import json

with open('traits.json') as f:
    data = json.load(f)

for item in data['tokenId']:
    item['tokenId'] = item['tokenId'].replace([int('+1')])

with open('new_data.json', 'w') as f:
    json.dump(data, f)
TypeError: list indices must be integers or slices, not str

谢谢你!

xkrw2x1b

xkrw2x1b1#

下面的似乎行得通

data = [
    {
        "Background": "Red",
        "Body": "Tunn",
        "Hat": "Bambu",
        "Outfit": "Pirate",
        "Expression": "Sad",
        "Accessory": "Rifle",
        "tokenId": 0
    },
    {
        "Background": "Lilac",
        "Body": "Tunn",
        "Hat": "Bicorn",
        "Outfit": "Pirate",
        "Expression": "Angry",
        "Accessory": "Balloons",
        "tokenId": 1
    },

    {
        "Background": "Green",
        "Body": "Tunn",
        "Hat": "Bicorn",
        "Outfit": "Pirate",
        "Expression": "Sad",
        "Accessory": "Balloons",
        "tokenId": 3000
    }
]

for entry in data:
    entry['tokenId'] = entry['tokenId'] + 1
    print(entry)

输出

{'Background': 'Red', 'Body': 'Tunn', 'Hat': 'Bambu', 'Outfit': 'Pirate', 'Expression': 'Sad', 'Accessory': 'Rifle', 'tokenId': 1}
{'Background': 'Lilac', 'Body': 'Tunn', 'Hat': 'Bicorn', 'Outfit': 'Pirate', 'Expression': 'Angry', 'Accessory': 'Balloons', 'tokenId': 2}
{'Background': 'Green', 'Body': 'Tunn', 'Hat': 'Bicorn', 'Outfit': 'Pirate', 'Expression': 'Sad', 'Accessory': 'Balloons', 'tokenId': 3001}
6yt4nkrj

6yt4nkrj2#

要将JSON文件中的“tokenId”字段的值增加1,可以按如下方式修改代码:

import json

with open('traits.json') as f:
    data = json.load(f)

for item in data:
    item['tokenId'] += 1

with open('new_data.json', 'w') as f:
    json.dump(data, f)

在你的原始代码中,你试图访问数据['tokenId'],就好像它是一个列表,但它实际上是一个字典。相反,您需要迭代列表数据并更新每个项目的“tokenId”字段。通过使用item['tokenId'] += 1,您将“tokenId”的值增加1。
最后,使用json.dump(data,f)将修改后的数据保存到名为“new_data. json”的新JSON文件中。
运行此代码后,“new_data.json”文件将包含更新的“tokenId”值,增量为1。

相关问题