:
我有.xlsx
格式的表“表1”,其中n行具有要合并/压缩的值。对于这个例子,我正在服用4:
a,b,c,d
e,f,g,h
i,j,k,l
m,n,o,p
.
.
.
n
.xlsx
格式的另一个表“表2”,其中包含要在表1中压缩的行数。假设:
1,4
1,2
1,3,4
2,3,4
1,2,3,4
.
.
n
预期产出:
a m,b n,c o,d p
a e,b f,c g,d h
a i m,b j n,c k o,d l p
e i m,f j n,g k o,h l p
a e i m,b f j n,c g k o,d h l p
我试过了:
将表2值存储在列表“table2Values”中,将表1值存储在列表“sheetData”中并执行以下操作:
for l in table2Values:
temp = sheetData[int(l)]
c = 1
if c > 1:
listNew = [x + " " + y for x, y in zip(temp1, temp)]
c += 1
temp1 = temp
finalHeader = listNew
如果只有两行要合并,上面的代码可以正常工作,即table2Values列表中只有2个值。但是,根据表2中指定的值,我无法弄清楚如何合并/压缩两行以上。
答案 0 :(得分:1)
假设table2Values
是一个数字列表列表(来自示例[[1,4],[1,2],[1,3,4],...
,sheetData
的每一行都是一个字符列表(或只是一个字符串),所需的字符串:
for row in table2Values:
print [" ".join(col) for col in zip(*[sheetData[i-1] for i in row])]
产生(在示例数据上):
['a m', 'b n', 'c o', 'd p']
['a e', 'b f', 'c g', 'd h']
['a i m', 'b j n', 'c k o', 'd l p']
['e i m', 'f j n', 'g k o', 'h l p']
['a e i m', 'b f j n', 'c g k o', 'd h l p']