【问题标题】:Not enough values to unpack when using split function使用拆分功能时没有足够的值来解包
【发布时间】:2018-09-29 21:39:33
【问题描述】:

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

如果我使用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)

【问题讨论】:

  • 请将您的代码作为文本而不是图像添加到问题中。
  • 您的for 循环错误,只需执行x, y, z = k 然后outputs1.append([int(x), y.strip(), z.strip()])。请注意,这将解决您的问题,但毫无疑问是一种更好的方式来编写整个代码块
  • outputs1 = [[int(k) if k.isdigit() else k.strip() for k in k.split(',')] for k in inputs]

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


【解决方案1】:

使用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()])

【讨论】:

    【解决方案2】:

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

    s.split(',') 在您的情况下返回 3 个字符串。买在左边只有一个变量k。您不能仅将 3 个变量分配给一个变量。

    改成 k1, k2, k3 = s.split(',') 会工作

    【讨论】:

    • 不,不是。它不能在那里发生,因为没有元组解包。就是这条线for (x, y, z) in k:
    • 啊,是的,我刚才正在检查!我猜我今天学到了一些东西!
    • 如果除了方括号 [ ] 之外,它们都具有相同的语法,k1 如何能够容纳 3 个字符串?
    【解决方案3】:

    试试这个:

    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']]
    

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 是的,我的问题是 k 和 k1 有什么区别。我知道 k1 按我想要的方式工作。请澄清我的疑问。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 2018-01-26
      • 2021-11-28
      • 2017-12-29
      • 1970-01-01
      相关资源
      最近更新 更多