替换单引号中的子列表列表(以逗号分隔)

时间:2019-10-29 07:36:41

标签: python python-3.x

使用Python3.x,我有一段代码生成X,其中子列表的列表用单引号引起来,并用逗号分隔...需要打印行Y,并替换{ {1}}。

X

预期产量

X = ['sequence, A, 1, 2, 3', 
     'sequence, B, 10, 20, 30', 
     'sequence, C, 100, 200, 300']

Y = ['VEQ','1','map','2','cap',]

'VEQ','1','A','2','1' 'VEQ','1','B','2','10' 'VEQ','1','C','2','100' 替换为Y[field3-map]X[field2]替换为Y[field5-cap]X[field3]的其他字段将保持不变。

我已经尝试根据自己的要求修改下面的参考代码,但是没有用。

Y

2 个答案:

答案 0 :(得分:1)

这是一个简单且高效的内存(由于lazy evaluation of map),我正在打印结果,因此只需要一份message即可被覆盖:

Y

如果要将值存储在某处,则每次都需要拥有X = ['sequence, A, 1, 2, 3', 'sequence, B, 10, 20, 30', 'sequence, C, 100, 200, 300'] Y = ['VEQ','1','map','2','cap',] retval = Y[:] for x in map(lambda x: str.split(x, ','), X): retval[2] = x[1] retval[4] = x[2] print(retval) 的单独副本:

Y

答案 1 :(得分:0)

不确定这是否是您想要的东西,但是可以解决:

X = ['sequence, A, 1, 2, 3', 
     'sequence, B, 10, 20, 30', 
     'sequence, C, 100, 200, 300']

Y = ['VEQ','1','map','2','cap',]

def replace(X,Y,position_list):
    result = []
    for x in X:
        x = x.split(',')
        x = [t.strip() for t in x]
        temp = Y.copy()
        for pos in position_list:
            temp[pos[0] - 1] = x[pos[1] - 1]
        result.append(temp)
    return result

replace(X,Y,[(3,2),(5,3)])

输出:

[['VEQ', '1', 'A', '2', '1'],
 ['VEQ', '1', 'B', '2', '10'],
 ['VEQ', '1', 'C', '2', '100']]

这里position_list是要替换的(Y_pos,X_pos)元组的列表,例如(3,2)表示将Y的第三值替换为{{1}的第二值}