Seite 1 von 1

Tabellen in Word-Datei lesen ist extrem langsam

Verfasst: Dienstag 23. April 2019, 18:50
von mmtzh
Hallo,

ich möchte über eine Tabelle in einer Word-Datei iterieren. Das mache ich mit folgendem Code:

Code: Alles auswählen


def getText():
    doc =  docx.Document('zeug.docx')
    table = doc.tables[0]
    table_data = {}
    for row in table.rows:

        translation = row.cells[1].text
        table_data[row.cells[0].text] = translation

    return table_data
Ich verwende die library python-docx 0.8.10

Es funktioniert alles wie gewünscht. Aber für eine Word-Datei mit einer Tabelle mit ca. 1000 Zeilen (und zwei Spalten) dauert das ganze ca. 6 Minuten.

Ich finde das ziemlich langsam. Hat jemand eine Idee, was ich falsch mache oder wie es schneller geht?

Re: Tabellen in Word-Datei lesen ist extrem langsam

Verfasst: Dienstag 23. April 2019, 23:24
von __blackjack__
Das liegt an `docx`, die öffentliche API scheint da bei jedem Zellzugriff die Zelle linear vom Anfang zu suchen. Wenn man sich in der Schleife zum Beispiel einen Zähler ausgeben lässt, sieht man auch, das die Schleife immer langsamer und langsamer wird.

Re: Tabellen in Word-Datei lesen ist extrem langsam

Verfasst: Mittwoch 24. April 2019, 07:22
von mmtzh
Gibts dafür eine alternative?

Re: Tabellen in Word-Datei lesen ist extrem langsam

Verfasst: Mittwoch 24. April 2019, 11:53
von ThomasL
Tabelle aus Word nach Excel kopieren, als .xlxs speichern
und dann mit openpyxl einlesen
https://support.office.com/de-de/articl ... 3a9c307e43
http://www.python-excel.org