Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用split函数时没有足够的值进行解压缩_Python_Python 3.x_Python 2.7_Python Requests - Fatal编程技术网

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的工作方式符合我的要求。请澄清我的疑问。