Ich möchte eine Excel-Arbeitsmappe mit 15 Feldern und etwa 2000 Zeilen einlesen und jede Zeile in ein Wörterbuch in Python konvertieren. Ich möchte dann jedes Wörterbuch an eine Liste anhängen. Ich möchte, dass jedes Feld in der obersten Zeile der Arbeitsmappe ein Schlüssel in jedem Wörterbuch ist und der entsprechende Zellenwert der Wert im Wörterbuch ist. Ich habe mir schon die Beispiele here und here angesehen, aber ich möchte etwas anderes machen. Das zweite Beispiel funktioniert, aber ich habe das Gefühl, dass es effizienter wäre, die oberste Zeile zu durchlaufen, um die Wörterbuchschlüssel zu füllen, und dann durch jede Zeile zu iterieren, um die Werte zu erhalten. Meine Excel-Datei enthält Daten von Diskussionsforen und sieht ungefähr so aus (natürlich mit mehr Spalten):XLRD/Python: Excel-Datei in dict mit for-loops lesen
id thread_id forum_id post_time votes post_text
4 100 3 1377000566 1 'here is some text'
5 100 4 1289003444 0 'even more text here'
Also, ich mag die Felder id
, thread_id
und so weiter, der Dictionary-Schlüssel sein. Ich würde meine Wörterbücher gerne wie folgt aussehen:
{id: 4,
thread_id: 100,
forum_id: 3,
post_time: 1377000566,
votes: 1,
post_text: 'here is some text'}
Anfangs hatte ich einige Code wie dieser Iterieren durch die Datei, aber mein Bereich ist für einen Teil der for-Schleifen falsch und ich bin zu erzeugen viel zu viele Wörterbücher. Hier ist mein ursprünglicher Code:
import xlrd
from xlrd import open_workbook, cellname
book = open('forum.xlsx', 'r')
sheet = book.sheet_by_index(3)
dict_list = []
for row_index in range(sheet.nrows):
for col_index in range(sheet.ncols):
d = {}
# My intuition for the below for-loop is to take each cell in the top row of the
# Excel sheet and add it as a key to the dictionary, and then pass the value of
# current index in the above loops as the value to the dictionary. This isn't
# working.
for i in sheet.row(0):
d[str(i)] = sheet.cell(row_index, col_index).value
dlist.append(d)
Jede Hilfe würde sehr geschätzt werden. Vielen Dank im Voraus für das Lesen.
Als Nebenwirkung eines Excel-Daten zu transformieren, wenn Sie Tabellendaten von der Art sein werden manipulieren, die in gespeichert werden Excel-Dateien, könnten Sie interessiert sein an ['Pandas'] (http://pandas.pydata.org); es wird Dinge machen, an die Sie noch nicht einmal gedacht haben. (Zum Beispiel könnte Ihr gesamter Code eine Zeile sein, wenn Sie möchten.) – DSM
@DSM: danke für die rec. Ich kenne Pandas, wollte aber selbst schweres Heben machen, weil ich dachte, dass es eine gute Lernerfahrung machen würde. Ich werde mir das in Zukunft genauer ansehen. – kylerthecreator