我有一个文本文件("input.param"
),它作为包的输入文件。我需要修改一个参数的值。需要更改的行如下:
param1 0.01
model_name run_param1
我需要搜索参数param1
并修改0.01
的值以获得一系列不同的值,同时model_name
也会相应地更改param1
的不同值。例如,如果para1
更改为0.03,则model_name
更改为“run\u param1\u p03”。下面是我的一些代码:
import numpy as np
import os
param1_range = np.arange(0.01,0.5,0.01)
with open('input.param', 'r') as file :
filedata = file.read()
for p_value in param1_range:
filedata.replace('param1 0.01', 'param1 ' + str(p_value))
filedata.replace('model_name run_param1', 'model_name run_param1' + '_p0' + str(int(round(p_value*100))))
with open('input.param', 'w') as file:
file.write(filedata)
os.system('./bin/run_app param/input.param')
然而,这是行不通的。我想主要的问题是replace
命令无法识别space
。但我不知道如何搜索参数param1
或model_name
并更改它们的值
我正在编辑这个答案,以便更准确地回答最初的问题,但它没有充分地回答
问题是} ,或者regex模块,可以提供很大的帮助。文档由条目及其值组成,并用空格分隔:
replace
命令无法识别空间“。为了做到这一点,^{在regex中,一般捕获如下所示:
正则表达式的功能如下:
^
捕获行的开始\S
是任何非空格字符,或者是('\t', ' ', '\r', '\n')
中任何不是的字符+
表示一个或多个贪婪搜索(将继续,直到模式停止匹配)\s+
是任何空格字符(与\S
相反,注意这里的大小写)()
表示组,或者您希望如何对搜索进行分组如果你愿意的话,分组可以让你很容易地把你的论点分解成变量。要将此应用于已存在的代码,请执行以下操作:
填充是使用
str.ljust
和str.rjust
方法完成的,因此得到如下格式:不过,如果你觉得有必要的话,你可以省略
rjust
相关问题 更多 >
编程相关推荐