You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除JSON文件中数值类型值的双引号?

解决JSON数值字段带双引号的问题

问题说明

生成的JSON文件中,lat、lon、aoe字段的值被当作字符串(带双引号)存储,而实际需要它们是不带引号的数值类型,以便folium库正确处理点位数据。

方法一:修改初始生成代码(推荐)

问题根源是原代码直接将文本分割后的字符串赋值给字典,导致json.dump将其序列化为字符串。只需在赋值时把字符串转为数值类型即可:

import json

filename = 'Lat_Lon_Time.txt'
dict1 = []
fields =['lat','lon','aoe']
 
with open(filename) as fh:
    for line in fh:
        # 分割每行数据,取前3个字段对应lat、lon、aoe
        description = line.strip().split(None, 4)[:3]
        dict2 = {}
        for field, value in zip(fields, description):
            # 将字符串转为浮点型数值
            dict2[field] = float(value)
        dict1.append(dict2)
    
with open("test2.json", "w") as out_file:
    json.dump(dict1, out_file, indent=4)

关键修改点

  • 用float(value)将分割得到的字符串转为数值类型,json模块会自动识别并输出不带引号的数值。
  • 用zip(fields, description)替代原有的while循环,代码更简洁易读。

方法二:事后修复现有JSON文件

如果已经生成了带引号的JSON文件,可以通过解析后转换类型再重新写入:

import json

# 读取原JSON文件
with open("test2.json", "r") as f:
    data = json.load(f)

# 遍历每条数据,转换字段类型
for item in data:
    item['lat'] = float(item['lat'])
    item['lon'] = float(item['lon'])
    item['aoe'] = float(item['aoe'])

# 写入修复后的JSON文件
with open("test2_fixed.json", "w") as f:
    json.dump(data, f, indent=4)

备选:正则表达式替换(慎用)

如果不想解析JSON,也可以用正则替换数值的引号,但注意仅当所有带引号的数字都是需要转换的字段时使用,避免误改其他字符串字段:

import re

with open("test2.json", "r") as f:
    content = f.read()

# 匹配并替换所有带引号的数值
fixed_content = re.sub(r'"(-?\d+\.?\d*)"', r'\1', content)

with open("test2_fixed.json", "w") as f:
    f.write(fixed_content)

内容的提问来源于stack exchange,提问作者henri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:49:53