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

  • 本文关键字:解压缩 拆分 功能 python
  • 更新时间 :
  • 英文 :


在这里,我正在尝试从列表中制作子列表,并且得到"没有足够的值来解压缩错误。

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

使用 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()])
k = s.split(',')这是

错误出现的地方。

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

将其更改为 k1, k2, k3 = 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 k1:
        outputs1.append([int(x), y.strip(), z.strip()])
print(outputs1)**

输出1:

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

我只是在修复您的代码,但是有更好的方法来编写此代码

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

最新更新