Keep getting ValueError:没有足够的值来解包(预期为2,实际为1)

2024-10-03 09:10:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在阅读Kinder和Nelson的《Python物理建模学生指南》。在第3章的开头是关于下载可用于实践的准备好的数据集的信息。数据集位于press.princeton.edu/titles/10644.html的zip文件中。我试图从zip文件中使用的数据集是HIVseries.csv。该文件包含16行代码,如下所示:

0, 1.061e+05
0.0831, 93240
0.1465, 1.6672e+05
0.2587, 1.5378e+05
0.4828, 1.188e+05
0.7448, 1.169e+05
0.9817, 1.0957e+05
1.2563, 1.1135e+05
1.4926, 74388
1.7299, 83291
1.9915, 66435
3.0011, 35408
4.0109, 21125
5.009, 20450
5.9943, 15798
7.0028, 4785.2

它是两列数字,用逗号分隔。在第48页和第49页,本书指示我加载数据集,并使用以下命令将数据生成为数组:

import numpy as np

data_set=np.loadtxt("HIVseries.csv", delimiter=',')
my_file=open("HIVseries.csv")
temp_data=[]
for line in my_file:
    print(line)
    x, y = line.split(',')
    temp_data +=[(float(x), float(y))]
my_file.close()
data_set=np.array(temp_data)

当我运行这些命令时,我不断得到以下错误: ValueError:没有足够的值来解包(预期值为2,实际值为1)

我不明白为什么我会犯这个错误。line.split命令清楚地告诉Python使用文件中的逗号分隔数据。此外,我完全按照书上所说的输入所有内容。它怎么能告诉我只有一个价值,而实际上有两个价值


Tags: 文件csv数据命令datamynpline
2条回答

我终于明白了。数据文件在数据前有几行空白。Python在读这些行,好像它们有什么意思

错误的原因很可能是文件中有一些没有逗号的额外行,当到达该行时,它抛出了您共享的错误(在我这方面,当使用您共享的文本运行代码时,它是有效的,但是如果例如我在末尾附加了一些空行,它抛出了相同的错误)

要进行调试,您可以在x, y = line.split(',')import pdb; pdb.set_trace()之前再插入一行,然后再次运行该程序。这样,程序将在x, y = line.split(',')之前暂停,并给您一个运行交互式代码的机会。例如,您可以查看每个line的外观以及哪个是抛出错误的

相关问题 更多 >