Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:没有足够的值来解包。为什么?_Python_File_Pickle - Fatal编程技术网

Python ValueError:没有足够的值来解包。为什么?

Python ValueError:没有足够的值来解包。为什么?,python,file,pickle,Python,File,Pickle,我正在从一个网站学习文件管理,我试着执行某个脚本,但效果不太好 它不断在以下行返回此错误:city,day,time=line.split() ValueError:没有足够的值来解包(至少应为2,得到0) 我正在尝试按字母顺序排列城市及其时区的列表,文本文件有以下几行: Salt lake city Sun 09:52 San Francisco Sun 00:52 Amsterdam Sun 08:52 Denver Sun 01:52 San Salvador Sun 01:52 Detr

我正在从一个网站学习文件管理,我试着执行某个脚本,但效果不太好

它不断在以下行返回此错误:
city,day,time=line.split()

ValueError:没有足够的值来解包(至少应为2,得到0)

我正在尝试按字母顺序排列城市及其时区的列表,文本文件有以下几行:

Salt lake city Sun 09:52
San Francisco Sun 00:52
Amsterdam Sun 08:52
Denver Sun 01:52
San Salvador Sun 01:52
Detroit Sun 02:52
代码如下:

import pickle

lines = open("cities_and_times.txt").readlines()
lines.sort()

cities = []
for line in lines:
    *city, day, time = line.split()
    hours, minutes = time.split(":")
    cities.append((" ".join(city), day, (int(hours), int(minutes)) ))

    f_new = open("cities_and_times.pkl", "bw")
    pickle.dump(cities, f_new)

    print(cities)

您需要一个if条件,该条件允许您跳过空行。比如:

if not line:
   continue

# Or do this

if not line:
   pass
else:
   *city, day, time = line.split()

提示:当您有一个空行时会发生什么?您可以使用
跳过空行,如果没有行:continue
。顺便说一句,你有一个缩进问题:
cities.append
行后面的内容不应该在
for
循环中。一个空行,怎么做?在文本文件上?没有,但行与行之间有空格。@Burhan,你是对的。我确实有空白,你能为引起错误的迭代打印
line
的值吗?现在可以了。你是对的,我在文件末尾有空格。你的最后一行:应该是。。。对不起,对于那个键入:“djje,如果空白行只在文件的末尾,那么您可以使用<代码>中断<代码>而不是<代码>继续<代码>,即,<代码>如果不是行:中断< /代码>,因为如果您在数据的末尾没有读取任何行的话,就没有任何意义。