1

次のように、Microsoft Excel からエクスポートされた csv ファイルを読み込もうとしています。

114.9;280.9;501.5;0;W10;Firewall south;A;1;2;;
119.0;280.9;501.5;0;W10;Southern escape route;B;2;3;asdasdf;
120.5;280.0;501.5;0;W10;Southern escape route;C;3;4;;

区切り文字はセミコロンで、一部の列が空になる場合があります。例えば、列10は一asdasdf例としてポピュレートされ得る。私のコードは次のようになります。

reader = csv.reader(open(inFile), delimiter=";")

nodesTable = window.getNodesTable()
pathsTable = window.getPathsTable()
clearTable(nodesTable)
clearTable(pathsTable)

for x, y, z, safe, mod, descr_node, name, start, end, descr_path in reader:
    nodesTable.SetStringItem(counter, nodesTable_ID_x, x)
    nodesTable.SetStringItem(counter, nodesTable_ID_y, y)
    nodesTable.SetStringItem(counter, nodesTable_ID_z, z)
    nodesTable.SetStringItem(counter, nodesTable_ID_SafeArea, safe)
    nodesTable.SetStringItem(counter, nodesTable_ID_Module, mod)
    nodesTable.SetStringItem(counter, nodesTable_ID_Description, descr_node)

    pathsTable.SetStringItem(counter, pathsTable_ID_Name, name)
    pathsTable.SetStringItem(counter, pathsTable_ID_StartNode, start)
    pathsTable.SetStringItem(counter, pathsTable_ID_EndNode, end)
    pathsTable.SetStringItem(counter, pathsTable_ID_Description, descr_path)

エラーが発生していますValueError: too many values to unpack。ここで何が間違っていますか?

4

1 に答える 1

5

CSV ファイルの各行には10 個のセミコロンがあります。つまり、行は11個の要素に分割されます。forループでは、使用される変数は10個だけです。行を次のように変更します。

for x, y, z, safe, mod, descr_node, name, start, end, descr_path, _ in reader:

変数を無視すると、行の最後と行末の_間の空の文字が取得されます。;

または、ループ全体を次のように変更します。

cols = (nodesTable_ID_x, nodesTable_ID_y, nodesTable_ID_z,
        nodesTable_ID_SafeArea, nodesTable_ID_Module,
        nodesTable_ID_Description, pathsTable_ID_Name,
        pathsTable_ID_StartNode, pathsTable_ID_EndNode,
        pathsTable_ID_Description)

for rec in reader:
    for col, val in zip(cols, rec):
        nodesTable.SetStringItem(counter, col, val)
于 2013-02-14T14:47:52.127 に答える