Tabellen in Word-Datei lesen ist extrem langsam

Code-Stücke können hier veröffentlicht werden.
Antworten
mmtzh
User
Beiträge: 2
Registriert: Dienstag 23. April 2019, 18:38

Dienstag 23. April 2019, 18:50

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?
Benutzeravatar
__blackjack__
User
Beiträge: 5993
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Dienstag 23. April 2019, 23:24

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.
long long ago; /* in a galaxy far far away */
mmtzh
User
Beiträge: 2
Registriert: Dienstag 23. April 2019, 18:38

Mittwoch 24. April 2019, 07:22

Gibts dafür eine alternative?
Benutzeravatar
ThomasL
User
Beiträge: 934
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Mittwoch 24. April 2019, 11:53

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
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten