TypeError: 'generator' - Objekt ist nicht subscriptable
import openpyxl
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb.active
sheet.columns[1]
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
sheet.columns[1]
TypeError: 'generator' object is not subscriptable
Ich bin ein Anfänger in Python und dies ist das erste mal für mich, um zu posten meiner Frage.
Ich bin stecken mit dem TypeError oben sagen, 'generator' - Objekt ist nicht subscriptable. Ich denke, dass ich genau das eingegeben code auf einer website.
Die URL der website ist https://automatetheboringstuff.com/chapter12/
Bitte mir helfen um diesen Fehler zu beheben.
- Dieser code funktioniert für mich. Wie @slai vorgeschlagen, überprüfen Sie Ihre Daten.
- Leider hat das Buch nicht aktualisiert worden, um änderungen in der API. Ad-hoc-Zugriff verwenden Python slicing-notation zB.
ws['A']
um eine Liste von Zellen in Spalte A.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass tutorial wurde für eine ältere version der openpyxl Bibliothek, 2.3.3. Seitdem ist das Verhalten der
.columns
hat sich ein wenig etwas geändert-ich bin zu faul zum nachschlagen, Wann genau -- und jetzt ist es produziert ein generator statt (ein fauler Objekt, das eigentlich nicht für alle Arbeit, es sei denn, es ist gefragt.)Wenn Sie don ' T Pflege viel über die Leistung, die Sie nennen könnte
list
auf den generator, der.columns
zurück und wählen Sie dann die entsprechende Spalte:Oder wählen Sie die Spalte von Namen:
Oder-und dies könnte am einfachsten sein, je nachdem, wie viel Zeit Sie sich geben wollen, um mögliche andere Probleme, die Sie stoßen könnten-Sie können einfach ein downgrade zu 2.3.3.
Wie gesagt im Paket der Dokumentation, die seit der version 2.4.0:
So, wenn Sie möchten, zu bekommen, Spalte 1 können Sie (zusätzlich zu den Möglichkeiten, wie bereits vorgeschlagen, durch DSM) verwenden
next()
Funktion auf dem generator:Aber wenn Sie wollen immer noch das downgrade
openpyxl
auf die version in dem Buch, versuchen: