微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何做line.splitin line:作为列表理解

如何解决如何做line.splitin line:作为列表理解

我正在尝试使用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和解包('*'):

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。