ValueError应为2得到1 Python
我正在尝试将以下数据读入我的程序ValueError应为2得到1 Python,python,python-3.x,file-io,stdin,Python,Python 3.x,File Io,Stdin,我正在尝试将以下数据读入我的程序 Distance (m) Mass (kg) 0.0865 0.1 0.1015 0.15 0.4416 0.9 0.4304 0.95 0.437 1.0 我正在使用下面的代码,这是直接从书中出来的 def getData(fileName): dataFile = open(fileName, 'r') distances = [] masses = [] discardHeader = dataFile.readlin
Distance (m) Mass (kg)
0.0865 0.1
0.1015 0.15
0.4416 0.9
0.4304 0.95
0.437 1.0
我正在使用下面的代码,这是直接从书中出来的
def getData(fileName):
dataFile = open(fileName, 'r')
distances = []
masses = []
discardHeader = dataFile.readline()
for line in dataFile:
d, m = line.split(' ')
distances.append(float(d))
masses.append(float(m))
dataFile.close()
return (masses, distances)
代码始终返回:
ValueError: not enough values to unpack (expected 2, got 1)
我已经在这里和网络上查看了其他ValueError条目,它们与将空间分隔的数据读取到程序中有关,但还没有找到一个具有实质性类似问题的条目
我猜想问题在于行
d,m=line.split(“”)
。我不知道这叫什么(复合赋值?元组赋值?),为什么它不起作用(我以前从未尝试过这种方法,但它似乎是合理的),或者如何使它起作用。如果任何以这种方式阅读文件的人都能了解情况,我们将不胜感激。您可能会在文件末尾遇到一个空白的新行
,该行在拆分时只给出一个项目列表([']
)。(另外,按空格分割不需要参数,这是默认值)
if len(line.split())<2:继续
在循环开始时,应该解决这个问题。您可能在文件末尾遇到一个空白的
新行
,该行在拆分时只给出一个项目列表(['']
)。(另外,按空格分割不需要参数,这是默认值)
if len(line.split())<2:继续
在循环开始时,应解决此问题。这称为解包。当您有一个iterable(列表、元组或任何支持索引的东西)时,类似x,y=point
的语法会获取点[0],点[1]
元素,并分别将它们分配给x,y
。但是,如果没有点[0]
或点[1]
它将抛出异常
这就是您的情况,很可能是因为文件中的某些行在两个值之间缺少空格,因此line.split(“”)
只返回一个值,这称为解包。当您有一个iterable(列表、元组或任何支持索引的东西)时,类似x,y=point
的语法会获取点[0],点[1]
元素,并分别将它们分配给x,y
。但是,如果没有点[0]
或点[1]
它将抛出异常
这就是您的情况,很可能是因为文件中的某一行在两个值之间缺少空格,所以
line.split(“”)
只返回一件事文件中的某一行中没有空格。请尝试在循环的开始处添加print(line)
,以查看哪一行失败。我怀疑“last”行以换行符结尾。文件中的一行中没有空格。请尝试在循环开始处添加print(line)
,以查看它在哪一行上失败。我怀疑“last”行“行以换行符结尾。感谢您解决了这种语法类型是什么及其作用的问题!作者们认为这是不言而喻的。感谢您解决了这种语法类型是什么及其作用的问题!作者认为这是不言而喻的。
if len(line.split()) < 2: continue