2017-02-14 6 views
0

Gegeben:
Ich habe eine Tabelle "Tabelle 1" in .xlsx Format mit n Anzahl der Zeilen mit den Werten, die zusammengeführt/gezippt werden sollen. Für dieses Beispiel nehme ich 4:Python Zip() für n Zeilen

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

eine andere Tabelle "Tabelle 2" in .xlsx Format Anzahl der Zeilen, die in Tabelle 1 Es wäre Reißverschluss zu:

1,4 
1,2 
1,3,4 
2,3,4 
1,2,3,4 
. 
. 
n 

Erwartete Ausgabe:

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 

Ich habe versucht:
Speichern von Tabelle 2 Werte in einer Liste "table2Values" und Tabelle 1 Werte in einer Liste "sheetData" und die folgenden Schritte Betrieb:

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 

obige Code funktioniert völlig in Ordnung, wenn die es nur zwei Zeilen sind nur zwei Werte in meiner table2Values ​​Liste zusammengefasst heißt es werden. Aber ich bin nicht in der Lage herauszufinden, wie mehr als zwei Zeilen zusammengeführt/gezippt werden, abhängig von den in Tabelle 2 angegebenen Werten.

+0

Was Sie die Ausgabe erwarten Beispieltabellen zu sein? –

+0

Scott Hunter, ich habe es in der Bearbeitung hinzugefügt. Lesen Sie bitte. –

+0

Was passiert, wenn der Code nicht funktioniert? Erhalten Sie einen Fehler? Unerwarteter Ausgang? –

Antwort

1

Angenommen, table2Values ist eine Liste von Listen von Zahlen (aus dem Beispiel [[1,4],[1,2],[1,3,4],... und jeder Zeile von sheetData ist eine Liste von Zeichen (oder auch nur ein String), das druckt die gewünschten Strings:

for row in table2Values: 
    print [" ".join(col) for col in zip(*[sheetData[i-1] for i in row])] 

, die ergibt (auf den Beispieldaten): für die

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