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

如何对JSON文本中特定结构内的数字执行乘法运算

解决方案

方案1:JSON解析方案(推荐)

你要处理的内容本身是标准JSON结构,用JSON库解析处理比正则更稳定,不会出现匹配遗漏、误改其他字段的问题,适配所有合法的数值格式:

import json
import os

def process_single_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        raw_content = f.read().strip()
    # 处理末尾多余逗号,包装为合法JSON数组
    if raw_content.endswith(','):
        raw_content = raw_content[:-1]
    data_list = json.loads(f'[{raw_content}]')

    for item in data_list:
        if 'DstQuad' in item:
            item['DstQuad'] = [num * 4 for num in item['DstQuad']]
        if 'SrcQuad' in item:
            item['SrcQuad'] = [num * 4 for num in item['SrcQuad']]
    
    # 还原原始格式,不需要末尾逗号可删除最后的+ ','
    output = json.dumps(data_list, ensure_ascii=False)[1:-1] + ','
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(output)

# 批量处理目标文件夹下所有文件,替换为你的文件夹路径
target_dir = './your_file_folder'
for file_name in os.listdir(target_dir):
    full_path = os.path.join(target_dir, file_name)
    if os.path.isfile(full_path):
        process_single_file(full_path)

方案2:修正版正则方案

如果你需要沿用正则匹配的方式,你原来的代码问题是捕获组数量和格式化参数不匹配,且逻辑过于僵硬,可替换为以下代码:

import re

def process_quad_match(match):
    # 提取数组内的所有数字逐个乘4
    num_list = match.group(2).split(',')
    processed = [str(int(num.strip()) * 4) for num in num_list]
    return f'{match.group(1)}[{",".join(processed)}]'

# 匹配所有DstQuad和SrcQuad对应的数组
editor.rereplace(r'("(DstQuad|SrcQuad)":\[)([\d,-]+)\]', process_quad_match)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:57:03