2017-02-14 61 views
0

鑑於:
我有一個.xlsx格式的表「表1」,其中n個行具有要合併/壓縮的值。具有行數對於n行Python Python zip()

a,b,c,d 
e,f,g,h 
i,j,k,l 
m,n,o,p 
. 
. 
. 
n 

另一個表「表2」中.xlsx格式在表1中假設是拉鍊::對於這個例子中我服用4

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值存儲在列表「sheetData」中的列表「table2Values」和表1值中並執行以下操作操作:

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 

上面的代碼,如果只有兩行合併即只有2個在我table2Values列表值工作完全正常。但是,我無法弄清楚如何合併/ ZIP根據表2

+0

你所期望的輸出,怎麼了示例表格是? –

+0

Scott Hunter,我在編輯中加入了它。請查閱。 –

+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']