Seite 1 von 1

Excel Liste in Array speichern und array erweitern

Verfasst: Samstag 31. März 2012, 12:41
von bricktop
Hi,

Will ein Excel Sheet in ein Array speichern und damit arbeiten. Das Einlesen klappt. Ich muss aber dem Array noch mehrere Spalten rechts anfügen, die die gleiche Zeilenanzahl haben.
Ich hab es mit extend versucht aber das Element steht dann außerhalb der eckigen Klammern. Soll aber innerhalb stehen.
Code bisher:

Code: Alles auswählen

sh = wb.sheet_by_name(u'Sheet1')
rows = int(len(range(sh.nrows)))

array = []
for i in range(rows):
  array.append(sh.row_values(i))
  #array.extend(["XY"])

Geht es nur mit extend?

Re: Excel Liste in Array speichern und array erweitern

Verfasst: Samstag 31. März 2012, 13:17
von deets
Zuerstmal: das hier ist voellig vermurkst:

Code: Alles auswählen

rows = int(len(range(sh.nrows)))
Da reicht wohl ein simples rows = sh.nrows....

Und dein generelles Problem verstehe ich noch nicht wirklich. Wie sehen die Daten denn aus, und wie sollen sie aussehen? Ich vermute aber mal das

Code: Alles auswählen

array.append(sh.row_values(i))
array[-1].extend(["X", "Y"])
zum Ziel fuehrt.

Re: Excel Liste in Array speichern und array erweitern

Verfasst: Samstag 31. März 2012, 13:18
von pillmuncher
bricktop hat geschrieben:

Code: Alles auswählen

sh = wb.sheet_by_name(u'Sheet1')
rows = int(len(range(sh.nrows)))
Echt jetzt? Du nimmst ein int (sh.nrows), erzeugst damit eine Liste ebendieser Länge, fragst dann die Liste wie lang sie ist, woraufhin sie ein int zurückgibt, welches du dann in ein int umwandelst, das dann notwendigerweise gleich sh.nrows ist.

Nenn eine Liste nicht array. Erstens ist sie kein Array, sondern eben eine Liste. Zweitens interessiert mich, wenn ich Code lese, nicht in erster Linie was für eine Art von Ding durch eine Variable benannt wird, sondern wozu die Variable verwendet wird. Das sollte sich im Namen wiederspiegeln. Etwa so:

Code: Alles auswählen

rows = []
for i in range(sh.nrows):
  row = sh.row_values(i)
  row.extend(["XY"])
  rows.append(sh.row)
Oder sogar, weil Listen schlau genug sind, um den +-Operator zu kennen:

Code: Alles auswählen

rows = [sh.row_values(i) + ["XY"] for i in range(sh.nrows)]