Maison >développement back-end >Tutoriel Python >Pourquoi est-ce que je reçois une erreur « TypeError : les indices de chaîne doivent être des entiers » lors du traitement des données JSON du problème GitHub ?
Pourquoi « TypeError : les indices de chaîne doivent être des entiers » avec les données de problème GitHub ?
Lors de la conversion des données de problème GitHub du format JSON au format CSV à l'aide Python, les programmeurs peuvent rencontrer l'erreur « TypeError : les indices de chaîne doivent être des entiers ». Pour résoudre ce problème, il est crucial de comprendre la nature de l'erreur et d'apporter les ajustements nécessaires au code.
Le message d'erreur indique une inadéquation entre les indices basés sur des entiers attendus et les indices de chaîne utilisés dans le code. Lorsque vous travaillez avec des chaînes, l'accès à des caractères spécifiques à l'aide d'indices entiers est valide. Cependant, cette approche n'est pas applicable à d'autres objets, tels que des dictionnaires ou des listes.
L'examen du code fourni révèle que le problème réside dans la ligne suivante :
csv_file.writerow([item["gravatar_id"], item["position"], item["number"]])
Ici, l'élément est un dictionnaire et ses clés, à savoir "gravatar_id", "position" et "number", représentent les valeurs écrites dans le fichier CSV. L'erreur se produit car les dictionnaires utilisent des clés de chaîne pour accéder à leurs valeurs, et non des indices entiers.
Pour remédier à ce problème, il est essentiel de modifier le code pour utiliser des indices de chaîne au lieu d'indices entiers. Le code corrigé devrait ressembler à ceci :
csv_file.writerow([item["gravatar_id"], str(item["position"]), str(item["number"])])
En convertissant les valeurs numériques en chaînes, le code peut réussir à écrire les données dans le fichier CSV sans rencontrer l'erreur « TypeError : les indices de chaîne doivent être des entiers ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!