我有一个看起来像这样的列表:如何删除列表中满足一定条件的最左/最右元素?
['a', 'b', 'c', '', '', '']
这是解析“脏” csv文件的结果。我现在想摆脱右边的空栏。我不能只使用计数,因为长度是可变的。我也不能只用简单的过滤,因为也有看起来像这样的行:
['a1', '', 'c1', '', '']
所以我要保护那些不在最右侧的空列。有没有一种惯用的方式来做到这一点?我希望能有一些像“removeWhile”函数那样的功能,我可以在反向列表中应用。
我想出迄今最好的是以下几点:
def filterRow(row):
row.reverse()
blanks = 0
for x in row:
if x == '':
blanks += 1
else:
break
row.reverse()
return row[0:-blanks]
+1,非常优雅。 [我的回答(http://stackoverflow.com/a/16120252/1600898)演示了切片的方法,但该指数的计算结束了漫长而艰难的理解,或两者兼而有之。 – user4815162342 2013-04-20 12:30:37
+1,但请注意,当所有列都为空时,这会中断。 – root 2013-04-20 13:11:24
@root这是平凡的改变条件'固定,而第一行和行[-1] ==“”',但它是一种耻辱,这种混乱的一流解决方案 - 至少我的预感是,OP的行是从不全是空的。 – user4815162342 2013-04-20 13:43:27