替换fi中的变量对

2024-04-16 06:41:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个问题,我的目标是替换文件中的变量和文件名。 问题是我必须同时为所有组合(通常是24个组合)更改几个变量。你知道吗

我知道如何创建字符串的所有组合,但我想把列表放在里面,并对它们进行迭代。你知道吗

a = [ 'distance', 'T1', 'T2', 'gamma' ]
new_list = list(itertools.permutations(a, 2))

我创建了传递值的函数:

def replace_variables(distance ='0', T1 ='0', T2 = '0', gamma = '0'):
        template_new = template.replace('*distance*', distance).replace('*T1*', T1).replace('*T2*', T2).replace('*gamma*', gamma)
        input_file = input_name.replace('one','T1'+T1).replace('two','T2'+T2).replace('phi','PHI'+Phi).replace('distance','R'+distance)

        return template_new, input_file

当我调用那个函数时,我只能传递变量名。你知道吗

for i in new_list:
        elem1 = i[0]
        elem2 = i[1]
        template_new, input_file =replace_variables(elem1, elem2)
        print input_file

尽管我需要使用列表:

distance = ['-3','+3']
T1 = ['-3', '+3']
T2 = ['-3', '+3']
gamma = ['-3', '+3']

对于每对变量,更改文件中的值和文件名,例如:

原始文件:name_file_R_T1_T2_gamma.txt

将替换为:

name_file_3_3_0_0.txt, name_file_3_-3_0_0.txt,  name_file_-3_3_0_0.txt,
name_file_3_3_0_0.txt, name_file_3_0_3_0.txt, name_file_3_0_-3_0.txt,

等等。你知道吗

原始模板如下所示:

template = """
 R              =         3.0 *distance* cm
 THETA1         =         60. *T1*  degree
 THETA2         =         2.0  *T2* degree
 GAMMA          =         0 *gamma* degree
"""

我想得到:

template = """     
     R              =         3.0 +3 cm
     THETA1         =         60. +3  degree
     THETA2         =         2.0  +0 degree
     GAMMA          =         0 +0 degree

"""

等等


Tags: 文件nametxtnewinput文件名templatereplace
1条回答
网友
1楼 · 发布于 2024-04-16 06:41:47

我想我几乎解决了上述问题:

#!/usr/bin/env python
import itertools
import copy

def replace_variables(i, distance ='0', T1 ='0', T2 = '0', gamma = '0' ):
        k_  = copy.deepcopy(i)
        k_[0][0] = '-2'
        k_[1][0] = '2'
        template_new = template.replace('*distance*', distance).replace('*T1*', T1).replace('*T2*', T2).replace('*gamma*', gamma)
        input_file = input_name.replace('one','T1'+T1).replace('two','T2'+T2).replace('gamma','gamma'+gamma).replace('distance','R'+distance)

     f = open(template_new, 'w')
     f.write(template_new)
     f.close()


input_name = 'name_file_distance_T1_T2_gamma.txt'

template = """
  R              =         3.0 *distance* cm
 THETA1         =         60. *T1*  degree
 THETA2         =         2.0  *T2* degree
 GAMMA          =         0 *gamma* degree
"""

a = [['distance','+2','-2'], ['T1','+2','-2'], ['T2','+2','-2'], ['gamma','+2','-2']]
new_list = list(itertools.permutations(a, 2))

for i in new_list:
      replace_variables(i, x, y)

尽管我面临两个问题:

1)我的代码不会更改replace\u variables函数中变量的值(除了默认值),我得到: 名称文件\u Rdistance \u T1T1 \u T20 \u gamma0.txt,依此类推 我想是因为传递给函数的默认参数。你知道吗

2)我的函数不创建分离的文件。你知道吗

相关问题 更多 >