Python 使用split函数时没有足够的值进行解压缩
在这里,我试图从列表中创建一个子列表,我得到的是“没有足够的值来解包错误” 如果我使用Python 使用split函数时没有足够的值进行解压缩,python,python-3.x,python-2.7,python-requests,Python,Python 3.x,Python 2.7,Python Requests,在这里,我试图从列表中创建一个子列表,我得到的是“没有足够的值来解包错误” 如果我使用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=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)
k1:中的(x,y,z)需要,而不是k:
中的(x,y,z)需要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']]
我只是在修改你的代码,但是有更好的方法来编写这个代码,使用k
,你有一个包含三个元素的元组,在中为(x,y,z)在k
中,您试图将这三个元素中的每一个解压为另外三个元素。这不起作用。使用k1
,您有一个包含单个三元素元组的列表。在这里,k1
中的(x,y,z)的将起作用,但它完全没有意义
相反,您应该将值直接解压缩到x,y,z
:
for s in inputs:
x, y, z = s.split(',')
outputs1.append([int(x), y.strip(), z.strip()])
请将您的代码作为文本而不是图像添加到问题中。您的for
循环是错误的,只需执行x,y,z=k
然后outputs1.append([int(x),y.strip(),z.strip()])
。注意,这将解决您的问题,但毫无疑问,编写整个块outputs1=[[int(k)如果k.isdigit()否则k.strip()()对于k中的k.split(“,”)]对于k中的输入]
不,它不是。它不可能出现在那里,因为没有元组解包。这是k中(x,y,z)的这一行:
啊,是的,我刚才在检查它!我想我今天学到了一些东西!如果它们都有相同的语法,k1是如何容纳3个字符串的,除了一个方括号[]是的,我的问题是k和k1有什么区别。我知道k1的工作方式符合我的要求。请澄清我的疑问。