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

Python文本替换:迭代修改SDL文件中指定位置数值

解决方案

核心思路

用正则表达式精准定位目标数值对,结合随机数生成逻辑,循环6次完成迭代修改。

步骤实现

  1. 导入依赖模块
import re
import random
  1. 定义随机数值对生成函数
    可根据需求调整随机数范围,示例生成前小后大的整数对(支持负数):
def generate_random_pair():
    # 生成两个随机整数,允许负数,确保前数小于后数
    num1 = random.randint(-15, 15)
    num2 = random.randint(num1 + 1, num1 + 20)
    return f"{num1} to {num2}"
  1. 循环迭代修改文件
    每次基于原始文件内容修改,避免多次迭代后出现错误替换:
# 读取原始文件内容
with open('test.sdl', 'r', encoding='utf-8') as f:
    original_content = f.read()

# 执行6轮迭代
for round_num in range(6):
    new_pair = generate_random_pair()
    # 正则精准匹配第二个[]内的第一个数值对
    # 反向预查匹配"[-, ",正向预查匹配", ",确保只替换目标位置
    updated_content = re.sub(r'(?<=\[-, )(-?\d+ to -?\d+)(?=, )', new_pair, original_content)
    # 按迭代序号保存新文件,避免覆盖原文件
    with open(f'test_round_{round_num+1}.sdl', 'w', encoding='utf-8') as f:
        f.write(updated_content)
    print(f"第{round_num+1}轮完成,已生成test_round_{round_num+1}.sdl")

关键说明

  • 正则表达式(?<=\[-, )(-?\d+ to -?\d+)(?=, ):
    • (?<=\[-, ):反向预查,确保匹配内容前是[-,
    • (-?\d+ to -?\d+):匹配带负号的数值对(-?表示可选负号)
    • (?=, ):正向预查,确保匹配内容后是,
  • 如果需要直接覆盖原文件,把写入的文件名改成test.sdl即可,但建议保留原始文件,按迭代生成新文件更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:42:22