python - 如何通过python替换非标准json文件中的值
问题描述
我有 json 文件,文件中有很多注释。我只想替换特定值并通过将结构和格式保存在 json 文件中来保存结果。
例如在这部分:
"blocks" : [
{
"block_name" : "PNS1",
"ip" : "192.168.1.142",
"dynamic_ports" : { "first" : 10000, "last" : 15000 },
"inherits" : "PNS",
"in" : [],
"out" : [
/* Отправка данных в другой коллектор */
{ "name" : "collector_data_out", "dest_port" : "collector_data_in", "dest_block" : "PNS2", "fifo" : true },
/* Отправка темперутры, давлений и тарировок в СВС */
{ "name" : "svs_ctrl_out", "dest_port" : "svs_ctrl_in", "dest_block" : "SELF,MFI1,MODEL", "fifo" : true },
/* Отправка данных для определения главного транзитора */
{ "name" : "another_transitor_out", "dest_port" : "another_transitor_in", "dest_block" : "PNS2", "fifo" : true }
]
},
我要替换的只是块-> ip。所以它必须是这样的:
"ip" : "127.0.0.1",
这是原始 json 文件:https ://pastebin.com/Neumxy4p
我怎样才能通过 python json 做到这一点?
解决方案
您的 JSON 文件包含不被视为有效 JSON 的注释,如果尝试使用json.load
或将无法加载json.loads
。
我使用了正向前瞻和正向后视来匹配您的 IP 地址并将其替换为127.0.0.1
.
import re
with open('your_file_name.json') as fp:
file_content = (fp.read())
file_content = re.sub(r'(?<="ip"[\s]:[\s]")[\d.]+(?=",)', "127.0.0.1", file_content)
推荐阅读
- c++ - 你能解释一下什么是分段错误吗?这段代码在一个测试用例中给出了分段错误错误
- django - 在 Django 模型中引用用户
- validation - 如何在 AWS lambda Python 中更改此代码以更新 DynamoDB
- ios - 如何将带有 imagepickercontroller 的照片作为缩略图放入 collectionView 单元格
- c# - 我应该根据用户的 SID 或 Windows 用户名授权用户吗?
- neural-network - 确定反向传播的准确性好坏
- javascript - 如何仅删除特定类jquery的第一组div
- python - 提取 src 属性
- python - 这个错误意味着什么:使用python生成器作为输入时不支持`y`参数
- swift - 编写单元测试时如何使用解析器