ホームページ >バックエンド開発 >Python チュートリアル >Python で JSON を CSV に変換すると「TypeError: String Indices Must Be Integers」というメッセージが表示されるのはなぜですか?

Python で JSON を CSV に変換すると「TypeError: String Indices Must Be Integers」というメッセージが表示されるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-05 01:50:10178ブラウズ

Why Am I Getting

トラブルシューティング: JSON から CSV への変換での「TypeError: String Indices Must Be Integers」

JSON と CSV を解析するための Python コード内CSV に変換すると、「TypeError: 文字列インデックスは次でなければなりません」が発生します。整数」エラー。これに対処するために、根本的な問題を詳しく調べて解決策を提供しましょう。

「TypeError: string indices must be integers」エラーは、インデックスを使用して文字列型変数にアクセスしようとしていることを示します。あなたの場合、インデックスを使用して JSON オブジェクトの値にアクセスしようとしています。

たとえば、コード スニペットでは次のようになります。

csv_file.writerow([item["gravatar_id"], item["position"], item["number"]])

さまざまなオブジェクトの値にアクセスしようとしています。 「gravatar_id」、「position」、「number」などのインデックス名を使用して、JSON オブジェクト内のフィールドを検索します。ただし、これらのフィールドはインデックスではなく、辞書のようなオブジェクトのキーです。

このエラーを解決し、JSON オブジェクトのフィールド値に正しくアクセスするには、辞書アクセス構文を使用する必要があります。 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')])

このコードは、get() メソッドを使用して、辞書のような JSON オブジェクトから指定されたフィールドの値を取得します。

間違った文字列インデックスを適切な辞書アクセス構文に置き換えることで、「文字列」に遭遇することなく、JSON ファイルを正常に解析し、必要な値を CSV ファイルに抽出できます。インデックスは整数である必要があります」エラー。

以上がPython で JSON を CSV に変換すると「TypeError: String Indices Must Be Integers」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。