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

求数组数值排序正则表达式,批量调整仿真输入参数文件内数组顺序

仿真输入文件参数数组批量排序脚本方案

针对超过100份、单文件200行以上的材料数据文件,可直接用以下脚本实现双元素参数数组的自动升序重排,同时保留原有文件的排版对齐格式。

Python 批量处理脚本

该脚本可批量遍历指定目录下的所有目标后缀材料文件,自动处理所有符合参数名 = [数值1 数值2],格式的行,处理前会自动生成.bak备份文件,避免数据丢失。

import os
import re

# 配置项:修改为你的材料文件存放目录、对应文件后缀
TARGET_DIR = "./material_files"
FILE_SUFFIX = ".txt"
BACKUP_ORIGIN = True

# 匹配规则:匹配 任意参数名 = [数字1 任意空格 数字2] 格式的内容
PATTERN = re.compile(r'(\w+\s*=\s*\[)([\d.-]+)(\s+)([\d.-]+)(\],*)')

def process_single_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        lines = f.readlines()
    
    processed_lines = []
    for line in lines:
        match = PATTERN.match(line)
        if not match:
            processed_lines.append(line)
            continue
        # 提取分组内容
        prefix = match.group(1)
        num1 = float(match.group(2))
        space = match.group(3)
        num2 = float(match.group(4))
        suffix = match.group(5)
        # 排序两个数值
        sorted_nums = sorted([num1, num2])
        # 拼接回原格式,保留原有空格长度不破坏对齐
        new_line = f"{prefix}{sorted_nums[0]}{space}{sorted_nums[1]}{suffix}\n"
        processed_lines.append(new_line)
    
    # 备份原文件
    if BACKUP_ORIGIN:
        os.rename(file_path, f"{file_path}.bak")
    # 写入处理后的文件
    with open(file_path, 'w', encoding='utf-8') as f:
        f.writelines(processed_lines)

if __name__ == "__main__":
    for root, _, files in os.walk(TARGET_DIR):
        for file in files:
            if file.endswith(FILE_SUFFIX) and not file.endswith(".bak"):
                full_path = os.path.join(root, file)
                process_single_file(full_path)
    print("所有文件处理完成")

快速单行处理(Linux/macOS 环境适用)

如果仅需要临时处理少量文件,可直接用awk单行命令完成单文件转换:

awk '/\[.* .*\]/{split(substr($0,index($0,"[")+1,index($0,"]")-index($0,"[")-1),a," "); n1=a[1]+0; n2=a[length(a)]+0; if(n1>n2) {sub(/\[.*\]/,"["n2" "n1"]",$0)} }1' 输入文件.txt > 输出文件.txt

注意事项

  • 若你的参数数组包含超过2个元素,可修改Python脚本的正则匹配逻辑,提取所有数组元素后统一排序再拼接即可
  • 若仅需要处理指定名称的参数(如仅处理mobility、eps0两个参数),可在正则规则前加参数名过滤逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:36:03