r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
Je ne peux pas accéder à mes données dans le JSON. Qu'est-ce que je fais mal?
TypeError: string indices must be integers, not str
json.dumps()
convertit un dictionnaire en objet str, pas en objet json (dict)! vous devez donc charger votre str dans un dict pour l'utiliser en utilisant la méthode json.loads()
Voir json.dumps()
comme méthode de sauvegarde et json.loads()
comme méthode de récupération.
Voici un exemple de code qui pourrait vous aider à mieux comprendre:
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()
renvoie la représentation sous forme de chaîne JSON du python dict. Voir la documentation
Vous ne pouvez pas faire r['rating']
parce que r est une chaîne, pas un dict
Peut-être que vous vouliez dire quelque chose comme
r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))
Pas besoin de le convertir en chaîne en utilisant json.dumps()
r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))
Vous pouvez obtenir les valeurs directement à partir de l'objet dict.
Définir r comme dictionnaire devrait faire l'affaire:
>>> r: dict = {'is_claimed': 'True', 'rating': 3.5}
>>> print(r['rating'])
3.5
>>> type(r)
<class 'dict'>