当前位置:  开发笔记 > 编程语言 > 正文

Pythonic方式添加元素csv.writerows

如何解决《Pythonic方式添加元素csv.writerows》经验,为你挑选了1个好方法。

我有一份清单清单.每个列表应该有6个元素.在某些情况下,我的列表只包含1个元素(检查以下列表的最后一个元素):

[['lemonade', '/g/11bz0dg4b_', '46.6522598267', 'Lemonade', 'Beyonc\xc3\xa9', 'en'], 
 ['blank space', '/m/012d3qyr', '153.392837524', 'Blank Space', '', 'en'],
 ['radiolab', '/g/11b80zm_6d', '11.685131073', 'Radiolab', '', 'en'], 
 ['migos t shirt']]

因此,我可以轻松地执行此操作然后追加:

l = ['migos t shirt'] 
l += ['','','','','']
ll.append(l)

有没有更好/更优雅的方式来做到这一点?最终目标是使用我的csv.writerows列表列表,并希望我的文件在这种情况下具有一致数量的逗号6个元素.



1> Mike Müller..:

您可以将列表与空字符串相乘['']以获得包含尽可能多的空字符串的列表:

>>>  [''] * 3
['', '', '']

乘以零会得到一个空列表:

>>>  [''] * 0
[]

找出所需大小(6)与列表当前长度的差异,并在每行末尾len(line)添加一个列表'':

对于这些数据:

data = [['lemonade', '/g/11bz0dg4b_', '46.6522598267', 'Lemonade', 'Beyonc\xc3\xa9', 'en'],
        ['blank space', '/m/012d3qyr', '153.392837524', 'Blank Space', '', 'en'],
        ['radiolab', '/g/11b80zm_6d', '11.685131073', 'Radiolab', '', 'en'],
        ['migos t shirt']]

你可以申请这些:

size = 6
for line in data:
    line += [''] * (size - len(line))

得到这个结果:

[['lemonade', '/g/11bz0dg4b_', '46.6522598267', 'Lemonade', 'Beyoncé', 'en'],
 ['blank space', '/m/012d3qyr', '153.392837524', 'Blank Space', '', 'en'],
 ['radiolab', '/g/11b80zm_6d', '11.685131073', 'Radiolab', '', 'en'],
 ['migos t shirt', '', '', '', '', '']]

与创建全新列表的列表推导相比,此方法修改了列表.这对大型列表非常有用.此外,如果所有行都已经是6个元素长,则原始列表不会有任何更改.即使原始列表已经处于完美状态,列表理解也会创建新列表.ie在所有子列表中有6个元素.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有