如何解决“没有足够的值来解压(预期2,得到1)”错误

时间:2019-07-16 15:33:05

标签: python-3.7

由于某种原因,我无法运行代码,因为它说我只需要一个值时就需要两个值。我该如何克服?

我试图删除该值,但是我得到的只是一个错误。

def read_from_file():
    with open("capital_data.txt") as file:
        for line in file:
            line = line.rstrip('\n')
            country, city = line.split("/")
            the_world[country] = city



ValueError: not enough values to unpack (expected 2, got 1)

我不知道还要放什么。我没有其他想法。

1 个答案:

答案 0 :(得分:1)

错误指的是这一行:

country, city = line.split("/")

split("/")返回一个list,其中包含来自字符串line的单词,并使用/字符进行拆分。例如,如果line是“日本/东京”,则line.split("/")将返回列表

['japan', 'tokyo']

如果没有/字符,则列表将仅包含1个元素。例如,如果line是“ japan,tokyo”,则将其拆分只会返回

['japan,tokyo']

country, city = ...发生的情况称为列表解压缩,这意味着第一个元素保存到country,列表的第二个元素保存到{{1} }。如果您的列表是city,则['japan', 'tokyo']将获得“日本”,而country将获得“东京”。如果右侧列表中的元素数量与左侧变量不匹配,则会出现“ 没有足够的值要解压”错误。

现在,我看不到capital_data.txt中的内容,但是很可能您文件中的city没有分隔符line(例如,“ japan,tokyo”)。因此,/split的行仅产生1个列表元素(“ 获得1 ”),但是左侧有2个变量(“ 预期2 ”)。

要克服这一点,您需要将文件阅读器代码与实际文件格式进行匹配,例如使用正确的定界符(替换/)。