Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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 如何为行:`中的` for line.split()执行`作为列表理解_Python_Split_List Comprehension - Fatal编程技术网

Python 如何为行:`中的` for line.split()执行`作为列表理解

Python 如何为行:`中的` for line.split()执行`作为列表理解,python,split,list-comprehension,Python,Split,List Comprehension,我正在尝试使用python理解 我有一份清单,格式如下: name_a:surname_a name_b:surname_b name_c:surname_c 我最初将一行中的每一对拆分为自己的变量的代码是: for lined in self.account: a, b = line.split(':') 我试着使用这种理解,但似乎不起作用: (a,b) = [line.split(':') for line in self.account] 正如@MattDMo所提到的,冒号在

我正在尝试使用python理解

我有一份清单,格式如下:

name_a:surname_a
name_b:surname_b
name_c:surname_c
我最初将一行中的每一对拆分为自己的变量的代码是:

for lined in self.account:
    a, b = line.split(':')
我试着使用这种理解,但似乎不起作用:

(a,b) = [line.split(':') for line in self.account]

正如@MattDMo所提到的,冒号在您的列表中缺失。如果添加它们,则会出现其他问题。如果打印列表理解返回的列表,它可能如下所示:

[['name_a', 'surname_a\n'], ['name_b', 'surname_b\n'], ['name_c', 'surname_c\n']]
问题是,不能将其分配给两个变量,因为列表中包含的元素数与文件中的行数相同

要获得所需的结果,必须转置二维列表,例如使用zip和解包('*'):


您想做什么?您缺少
行的冒号
参数。请在列表中拆分
。对于self.account中的行,它应该是
(a,b)=[line.split(“:”)
意外情况下,冒号不是problem@stilManiac我想检查一下列表,确保所有行都可以拆分,只要行中有冒号,就可以拆分。您可以这样做:
all(“:”in line for line in self.account)
zip(*)
?不,列表不正确,请参阅我上面的评论。@MattDMo谢谢,我已经监督了这个问题,但在回答中添加了它。
>>> with open('test_file.txt') as f:
...   (a, b) = zip(*[line.split(':') for line in f])
...
>>> a
('name_a', 'name_b', 'name_c')
>>> b
('surname_a\n', 'surname_b\n', 'surname_c\n')