1

「解凍するには値が多すぎます」例外がどのように私の質問に適用されるかわかりません。もしそうなら、説明してください

トレースバック:

c:\***>python graphJSON.py
Traceback (most recent call last):
  File "graphJSON.py", line 17, in <module>
    for region, four, one, two, three, threep in rows:
ValueError: too many values to unpack

この単純なコードで値が多すぎるというエラーが発生し、何が問題なのかわかりません。エラーは for ループ which から発生します。これは以前に尋ねられたというメッセージを受け取りましたが、答えはまったく不明です!

rows = csv.reader(open("graph.csv", "rb"))

# Init the the lists that will store our data
regions = []
fourHrs = []
oneDay = []
twoDay = []
threeDay = []
plusThreeDay = []

# Iterate through all the rows in our CSV
for region, four, one, two, three, threep in rows:

        regions = regions + [region]
        fourHrs = fourHrs + [four]
        oneDay = oneDay + [one]
        twoDay = twoDay + [two]
        threeDay = threeDay + [three]
        plusThreeDay = plusThreeDay + [threep]

# Format the output
output = {"data":[{"Regions":regions},
    {"Four Hours":fourHrs},
    {"One Day":oneDay},
    {"Two Days":twoDay},
    {"Three Days":threeDay},
    {"More than Three Days":plusThreeDay}
    ]}

JSON ファイルを生成します json_file = open("graph.json", "w") json.dump(output, json_file) csv のデータは次のようになります。

First   28  25  10  2   7 
Second  51  17  8   5   15 
Third   38  33  24  7   19

回答済み: 問題は CSV にあることがわかりました。削除した 1 つの段階でより多くの列がありましたが、Excel では参照が完全に削除されていないと思います。したがって、CSVを最初からやり直すとうまくいきました!

4

2 に答える 2

3

まず、@Wooble が指摘したように、csv ファイル自体ではなく、csv ファイルの各行をループする必要があります。

それが完了すると、次の行によって例外が発生します。

for region, four, one, two, three, threep in rows:

これは、例外のトレースバックで確認できます。

この問題はrows、コードが展開するように設定しているターゲット項目よりも項目が少ないか多いために発生します。

region, four, one, two, three, threep

つまり、6 項目未満/6 項目以上です。

于 2013-05-29T12:58:06.570 に答える
0

これは、CSV ファイルに 6 フィールド未満の行が 1 つ以上あるために発生する可能性があります。タプル アンパックは、CSV ファイル イテレータから返された行を for ループのヘッダーにリストした 6 つの変数名にアンパックするために使用されます。エラーは私にとって非常に理にかなっています!

于 2013-05-29T12:57:45.023 に答える