r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
Ich kann im JSON nicht auf meine Daten zugreifen. Was mache ich falsch?
TypeError: string indices must be integers, not str
json.dumps()
konvertiert ein Wörterbuch in ein str-Objekt, kein json (dict) -Objekt! Sie müssen also Ihre Zeichenkette in ein Diktat laden, um es mit der Methode json.loads()
zu verwenden
Siehe json.dumps()
als Sicherungsmethode und json.loads()
als Abrufmethode.
Dies ist das Codebeispiel, das Ihnen helfen könnte, es besser zu verstehen:
import json
r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
loaded_r = json.loads(r)
loaded_r['rating'] #Output 3.5
type(r) #Output str
type(loaded_r) #Output dict
json.dumps()
gibt die JSON-Zeichenfolgendarstellung des python Dikts zurück. Siehe die Dokumentation
Sie können r['rating']
nicht ausführen, da r eine Zeichenfolge und kein Diktat mehr ist
Vielleicht hast du so etwas gemeint
r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))
Es muss nicht in einen String konvertiert werden, indem json.dumps()
verwendet wird
r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))
Sie können die Werte direkt vom dict-Objekt abrufen.
Das Definieren von r als ein Wörterbuch sollte den Trick tun:
>>> r: dict = {'is_claimed': 'True', 'rating': 3.5}
>>> print(r['rating'])
3.5
>>> type(r)
<class 'dict'>