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

Python3如何自动修改文件指定行方括号内首个数值为原值两倍

实现思路

我们可以通过Python自带的正则模块自动匹配目标行中方括号内的第一个数值,提取后做乘2计算再替换回原字符串,无需手动输入替换前后的数值。


完整可运行代码

import re

# 打印确认原目标行内容
with open("chem_copy.cti","r") as f:
    data = f.readlines()
# 注意:如果你的2027是编辑器显示的从1开始计数的行号,这里要改为print(data[2026])
print(data[2027])

with open("chem_copy.cti", "r") as f:
    with open("chem_copy2.cti", 'w') as new_f:
        for i, line in enumerate(f):
            if i == 2027:
                # 匹配到目标行后执行替换逻辑
                def replace_calc(match):
                    # 提取数值转浮点,乘2后保持原6位小数的科学计数法格式
                    origin_num = float(match.group(1))
                    return f"[{origin_num*2:.6e}"
                # 正则匹配左方括号后的第一个数值
                new_line = re.sub(r'\[([\d.e+-]+)', replace_calc, line)
                new_f.write(new_line)
                print(f"修改后行内容:{new_line}")
            else:
                new_f.write(line)

关键说明

  • 正则表达式r'\[([\d.e+-]+)'可以适配整数、浮点数、科学计数法等多种数值格式,自动提取方括号后的第一个数值。
  • 行号适配:Python的enumerate默认从0开始计数,如果你用的是编辑器显示的1开头行号,把判断条件改为if i == 2026即可。
  • 可选优化:如果不需要固定行号,想要匹配所有reaction定义行做修改,可以把行号判断改为if line.strip().startswith("reaction("),实现批量自动处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:54:01