Python:"太多的值无法打开"在分配str.split()的结果时

时间:2016-05-11 07:39:00

标签: python-2.7 split iterable-unpacking

我有一个这样的文件:

a       hello
b       goodbye
c       submarine

我想将它保存到这样的字典中:

file = {'a': 'hello', 'b': 'goodbye', 'c': 'submarine'}

我试过了:

file={}
with open("the actual file") as f:
    for line in f:
        key , value = line.split()
        file[key] = val

我收到此错误:

ValueError: too many values to unpack

1 个答案:

答案 0 :(得分:2)

看起来你的行中有两个以空格分隔的单词,例如

a       hello
b       goodbye
c       submarine
d       some words

line.split()会将上面的最后一行拆分为3个项目["d", "some", "words"]的列表。

因为你只能(并且想要)处理两个项目,即键(第一个单词)和值(其他所有内容),我们必须将另一个参数传递给split()函数,该函数指定字符串的频率应该最多拆分。我们想要两个项目,所以它只能在这里拆分一次。我们必须添加None作为第一个参数,因为我们还必须指定一个分隔符,None是默认值,代表所有类型的空格。

简而言之,将代码行更改为:

        key, value = line.split(None, 1)