繁体   English   中英

Python使用分号分隔符读取csv文件:太多值无法解压缩

[英]Python reading csv file with semicolon delimiter: too many values to unpack

我正在尝试读取从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 我在这里做错了什么?

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM