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
相关产品推荐
相关产品推荐

