Excel Liste in Array speichern und array erweitern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bricktop
User
Beiträge: 14
Registriert: Samstag 9. Oktober 2010, 20:50

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?
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.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

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)]
In specifications, Murphy's Law supersedes Ohm's.
Antworten