list indices must be integers, not str

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
Pingponguin
User
Beiträge: 15
Registriert: Samstag 15. Februar 2014, 14:30

Hallo,

nach dem ich es nun schaffe Scripte auszuführen, habe ich bei der Ausführung die Fehlermeldung:

Errors occurred: list indices must be integers, not str

Bild

erhalten.

Das Ergebnis des Scripts ist eine JSON-Datei, die am Anfang auch den Fehler enthält:

Code: Alles auswählen

{
    "common": {
        "datablock_1": 1, 
        "message": "list indices must be integers, not str", 
        "parser": "WoT-Replay-To-JSON 0.9.3.0 by http://www.vbaddict.net", 
        "replay_version": "0.9.9.0", 
        "status": "error"
    }, 
Nach meine Recherchen gibt es die Fehlermeldung in verschiedenen Zusammenhängen. Was ich versucht habe, ist "Untabify" auf das Script anzuwenden, habe aber keine Ahnung, ob das wirklich daran liegt oder nicht. Hat aber auch nichts genützt.

Weiß jemand, ob das nun ein Python oder ein JSON Fehler ist und wie ich bei der Fehlersuche am Besten verfahre? Ich versuche das nun schon seit Gestern und bekomme es nicht hin.

Danke und Gruß,

Pingpong
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Bitte fertige keine Screenshots an, sondern kopiere einfach den betreffenden Inhalt aus dem Terminal-Fenster in deinen Beitrag rein. Das vereinfacht vieles.

Nächstes Problem: Welcher Code wird überhaupt ausgeführt? Ich sehe da nur eine Python-Datei, aber nicht dessen Inhalt. Da kann man wenig mit anfangen. Und erwarte bitte nicht, dass ein potenzieller Helfer alle Threads von dir verfolgt, falls du diese Datei schon irgendwo anders im Forum gepostet hast.

EDIT: In dem Fenster, wo die `cmd.exe` ausgeführt wird, musst du die rechte Maustaste klicken, dann im Menü den Punkt "Markieren" auswählen. Anschließend mit der linken Maustaste den gewünschten Bereich markieren und die Aktion mit der rechten Maustaste abchließen. Dadurch landet der Inhalt der Markierung als Text in der Zwischenablage und kann woanders eingefügt werden. Ist recht kompliziert, mit der PowerShell geht es etwas einfacher.
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@Pingponguin: als erstes solltest Du die Fehlerbehandlung des Programms reparieren. Wenn man Fehler nicht sinnvoll behandeln kann, sollte man sie überhaupt nicht behandeln. Wenn Du dann weißt, in welcher Zeile der Fehler auftritt, kannst Du zurückverfolgen, warum hier anscheinend eine Liste statt eines Wörterbuchs benutzt wird.
BlackJack

@Pingponguin: Ohne den Python-Quelltext zu kennen *und* die Datei die da verarbeitet wird *und* deren Spezifikation kann man da nicht viel sagen wo denn nun der Fehler genau liegt. In der JSON-Datei liegt der Fehler sicher nicht, denn die ist ja das *Ergebnis* und das Ergebnis ist hier halt das bei der Verarbeitung ein Fehler aufgetreten ist, der in der Ergebnisdatei gemeldet wird. Um die Stelle im Programm finden zu können wo das Problem aufgetreten ist, bräuchte man den kompletten Traceback und nicht nur die Zeichenkettenrepräsentation der Nachricht der Ausnahme.
Benutzeravatar
Kebap
User
Beiträge: 786
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Pingponguin hat geschrieben: Weiß jemand, ob das nun ein Python oder ein JSON Fehler ist und wie ich bei der Fehlersuche am Besten verfahre?
Das ist ein Fehler in deinem Python Code:

Code: Alles auswählen

>>> my_list = ["A", "B", "C"]
>>> print my_list[2]
C
>>> print my_list["2"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
>>>
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Pingponguin
User
Beiträge: 15
Registriert: Samstag 15. Februar 2014, 14:30

Hallo,

vielen Dank für Eure Antworten. Ich habe den Code nicht angefügt, weil er zu lang ist und die 6000 erlaubten Zeichen überschreitet.

https://cloudopoly.de/index.php/s/Dym4e4DI0YtPgQZ
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Bitte nutze ein Pastebin zum Hochladen von umfangreichem Code, z.B. dieses.
BlackJack

@Kebap: Problem ist das das nicht ”sein” Python-Code ist. Und der Fehler kann natürlich auch durch eine fehlerhafte Eingabedatei ausgelöst werden, denn die enthalten wohl teilweise auch JSON und wenn das irgendwo eine Zeichenkette statt einer Zahl enthält die dann im Programm als Index in eine Liste verwendet wird, dann wäre das kein Fehler im Programm.
Benutzeravatar
Kebap
User
Beiträge: 786
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Habe den Code mal hochgeladen: https://gist.github.com/anonymous/c24320368cf8e7536ae3

@BlackJack: Das könnte sein, aber ich wollte es nicht gleich allzu kompliziert machen. :mrgreen:
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
BlackJack

@Kebap: Wieso hast Du den Code hochgeladen? Der existiert doch bereits auf Github in einem normalen öffentlichen Repository.

Und er sieht *echt* gruselig aus. :twisted:
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

BlackJack hat geschrieben:Und er sieht *echt* gruselig aus. :twisted:
Mit "gruselig" ist das noch sehr wohlwollend umschrieben.
Benutzeravatar
Kebap
User
Beiträge: 786
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

BlackJack hat geschrieben:@Kebap: Wieso hast Du den Code hochgeladen? Der existiert doch bereits auf Github in einem normalen öffentlichen Repository. :twisted:
Situation normal, all fucked up.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Antworten