在JSON文件python中将值从字符串转换为整数

yws3nbqq  于 2022-12-05  发布在  Python
关注(0)|答案(1)|浏览(240)

我尝试将JSON文件中的值从字符串更改为整数,问题是键是行号,所以我不能通过键名调用(因为它们会不断更改)。需要更改的值在“sharesTraded”对象中。以下是我的JSON文件:

{
    "lastDate": {
        "30": "04/04/2022",
        "31": "04/04/2022",
        "40": "02/03/2022",
        "45": "02/01/2022"
    },
    "transactionType": {
        "30": "Automatic Sell",
        "31": "Automatic Sell",
        "40": "Automatic Sell",
        "45": "Sell"
    },
    "sharesTraded": {
        "30": "29,198",
        "31": "105,901",
        "40": "25,000",
        "45": "1,986"
    }
}

下面是我当前的代码:

import json

data = json.load(open("AAPL22_trades.json"))

dataa = data['sharesTraded']
dataa1 = dataa.values()
data1 = [s.replace(',', '') for s in dataa1]
data1 = [int(i) for i in data1] 

open("AAPL22_trades.json", "w").write(
    json.dumps(data1, indent=4))

但是,我需要用整数值来替换字符串值。相反,我的代码只是用整数替换整个JSON。我想结尾处还有一些我遗漏的东西,因为字符串已被更改为整数,但将其应用到JSON中却遗漏了。

nbysray5

nbysray51#

这样做有两个问题:第一,由于只将值转换为列表,因此丢失了有关哪个键与值相关联的信息;第二,将该列表写回文件,也丢失了所有其他数据。
您可以使用修改后的值创建一个新字典,并将其重新赋给原始字典。

import json

data = json.load(open("AAPL22_trades.json"))
data['sharesTraded'] = {k:int(v.replace(',', '')) 
    for k,v in data['sharesTraded'].items()}
json.dump(data, open("AAPL22_trades.json", "w"), indent=4)

相关问题