使用拆分功能时,没有足够的值来解压缩

时间:2018-04-19 11:37:59

标签: python python-3.x python-2.7 python-requests

在这里,我试图从列表中创建一个子列表,我得到的#34;没有足够的值来解压错误。

如果我使用k=s.split(',')则显示错误,而如果我使用k1=[s.split(',')],则在解包时不会显示任何错误。

两者具有相同的类型,相同的大小和相同的内容

我的代码:

inputs = ["1, foo, bar", "2, tom, jerry"]
outputs1=[]
for s in inputs:
    print(s)
    k=s.split(',')
    print(k,type(k),len(k))
    k1=[s.split(',')]
    print(k1,type(k1),len(k1))
    for (x, y, z) in k:
        outputs1.append([int(x), y.strip(), z.strip()])
print(outputs1)

4 个答案:

答案 0 :(得分:2)

使用k,您有一个包含三个元素的元组,在for (x, y, z) in k中,您尝试将这三个元素中的每个解包三个元素。这不起作用。使用k1,您有一个列表,其中包含一个三元组元组。在这里,for (x, y, z) in k1 工作,但这完全没有意义。

相反,您应该将值直接解压缩到x, y, z

for s in inputs:
    x, y, z = s.split(',')
    outputs1.append([int(x), y.strip(), z.strip()])

答案 1 :(得分:0)

s.split(',')这就是错误发生的地方。

在您的情况下,

k1, k2, k3 = s.split(',')返回3个字符串。在左侧购买只有一个变量k。您不能仅将3个变量分配给一个变量。

将其更改为 #include<stdio.h> int binomial(int n, int k) { if ((k = 0) || (k == n)) return 1; if (k>n) return 0; return binomial(n - 1, k - 1) + binomial(n - 1, k); } int main() { int a, b, res; a = 4; b = 2; res = binomial(a, b); printf("The result is %d", res); return 0; } 会工作

答案 2 :(得分:0)

试试这个:

inputs = ["1, foo, bar", "2, tom, jerry"]
outputs1=[]
for s in inputs:
    print(s)
    k=s.split(',')
    print(k,type(k),len(k))
    k1=[s.split(',')]
    print(k1,type(k1),len(k1))
    for (x, y, z) in k1:
        outputs1.append([int(x), y.strip(), z.strip()])
print(outputs1)**

输出1:

[[1, 'foo', 'bar'], [2, 'tom', 'jerry']]

我只修复你的代码,但有更好的方法来编写这段代码

答案 3 :(得分:-1)

您需要for (x, y, z) in k1:而不是for (x, y, z) in k: