Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Saya Mendapat 'TypeError: Indeks Rentetan Mesti Integer' Apabila Menukar JSON kepada CSV dalam Python?
Dalam kod Python anda untuk menghuraikan JSON dan menukarnya kepada CSV, anda menghadapi "TypeError: indeks rentetan mesti menjadi ralat integer". Untuk menangani perkara ini, mari kita mendalami isu asas dan menyediakan penyelesaian.
Ralat "TypeError: indeks rentetan mestilah integer" menunjukkan bahawa anda sedang cuba mengakses pembolehubah jenis rentetan menggunakan indeks. Dalam kes anda, anda cuba mengakses nilai objek JSON menggunakan indeks.
Sebagai contoh, dalam coretan kod anda:
csv_file.writerow([item["gravatar_id"], item["position"], item["number"]])
Anda cuba mengakses nilai pelbagai medan dalam objek JSON dengan menggunakan nama indeks, seperti "gravatar_id", "position", dan "number". Walau bagaimanapun, medan ini bukan indeks tetapi kunci objek seperti kamus.
Untuk menyelesaikan ralat ini dan mengakses nilai medan objek JSON dengan betul, anda perlu menggunakan sintaks akses kamus. Berikut ialah kod yang diperbetulkan menggunakan fungsi JSON.loads():
import json import csv with open('issues.json', 'r') as f: data = json.load(f) with open('issues.csv', 'wb+') as f: csv_file = csv.writer(f) csv_file.writerow(["gravatar_id", "position", "number"]) for item in data['issues']: csv_file.writerow([item.get('gravatar_id'), item.get('position'), item.get('number')])
Kod ini menggunakan kaedah get() untuk mendapatkan semula nilai medan yang ditentukan daripada objek JSON seperti kamus.
Dengan menggantikan pengindeksan rentetan yang salah dengan sintaks akses kamus yang betul, anda boleh berjaya menghuraikan fail JSON dan mengekstrak nilai yang dikehendaki ke dalam Fail CSV, tanpa menemui ralat "indeks rentetan mestilah integer".
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'TypeError: Indeks Rentetan Mesti Integer' Apabila Menukar JSON kepada CSV dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!