Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python替换格式化文件中的值_Python_File - Fatal编程技术网

用python替换格式化文件中的值

用python替换格式化文件中的值,python,file,Python,File,我有一个字符串,请参阅附件,我想使用函数修改它 给出要设置的节名称、参数名称和值 另外,如果我想修改同一节的多个参数,如何确定位置 在文件中,以避免扫描同一节的x时间: &NAM_WRITE_COVER_TEX CLANG='FR' / &NAM_FRAC LECOCLIMAP = T / &NAM_PGD_GRID PGRID = 'CONF PROJ ' / &NAM_CONF_PROJ_GRID XLATCEN=43., XLONCEN=0. NIMAX=

我有一个字符串,请参阅附件,我想使用函数修改它

给出要设置的节名称、参数名称和值

另外,如果我想修改同一节的多个参数,如何确定位置 在文件中,以避免扫描同一节的x时间:

&NAM_WRITE_COVER_TEX CLANG='FR'
/
&NAM_FRAC LECOCLIMAP = T
/
&NAM_PGD_GRID PGRID = 'CONF PROJ '
/
&NAM_CONF_PROJ_GRID 
XLATCEN=43.,
XLONCEN=0.
NIMAX=12, 
NJMAX=8, 
XDX=60000., 
XDY=60000. /
&NAM_CONF_PROJ 
XLAT0=43., XLON0=0., XRPK=1.0, XBETA=0. /
/
&NAM_PGD_SCHEMES CNATURE = 'ISBA' , 
CSEA = 'SEAFLX' , 
CTOWN = 'TEB' , 
CWATER = 'WATFLX' ,
LGARDEN = F
/

我可以建议使用python正则表达式。正则表达式将只使用一个过程

def replace_value(matchobj):
    new_repl_dict = {'XLATCEN': 54, 'XDX': 7000, 'CTOWN': "'NEW_VAL'"}
    if matchobj.group(1) in new_repl_dict: 
        return matchobj.group(1) + matchobj.group(2) + new_repl_dict[matchobj.group(1)]

file = "&NAM_WRITE_COVER_TEX CLANG='FR'\n..."
re.sub('(XLATCEN|XDX|CTOWN)(\s*=\s*)([^\n]*)', replace_value, file)

有什么原因不能使用XML或格式化的Excel文件吗?Python有很多库可以直接编辑这些类型的文件。这是一种文档格式吗?如果是的话,可能已经有了一个模块来完成您想要的任务。否则,我会说这种格式看起来很像fortran程序使用的
ini
文件格式。我没有选择使用其他格式。@johnthexii,Python ConfigParser看起来很有趣。您认为我可以添加像“&”这样的特定结构作为begin section标记“/”作为section@Victor的结尾,你认为可以通过筛选替换来指定更改涉及的节吗,因为不同的节中可能存在相同的参数名称感谢提供(-1)的人我的问题不是简单的搜索和替换这不需要帖子,我想做的是稍微复杂一点,但这需要真正理解问题!!!