由于某种原因,我无法运行代码,因为它说我只需要一个值时就需要两个值。我该如何克服?
我试图删除该值,但是我得到的只是一个错误。
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)
我不知道还要放什么。我没有其他想法。
答案 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 ”)。
要克服这一点,您需要将文件阅读器代码与实际文件格式进行匹配,例如使用正确的定界符(替换/
)。