我有一个如下所示的列表:
['a', 'b', 'c', '', '', '']
这是解析“脏”csv 文件的结果。我现在想去掉右侧的空列。我不能只使用计数,因为长度是可变的。我也不能只使用简单的过滤,因为还有一些行看起来像这样:
['a1', '', 'c1', '', '']
所以我必须保留空列not在最右边。有一个惯用的方法来做到这一点吗?我希望有一个类似“removeWhile”函数的东西,我可以将其应用于反向列表。
到目前为止我想出的最好的方法如下:
def filterRow(row):
row.reverse()
blanks = 0
for x in row:
if x == '':
blanks += 1
else:
break
row.reverse()
return row[0:-blanks]
def filterRow(row):
while row[-1] == "":
row.pop()
如果您出于某种原因不想就地执行此操作,请改为这样做:
def filterRow(row):
row = list(row)
while row[-1] == "":
row.pop()
return row
弹出列表末尾的速度非常快,尽管may计算最后一个索引并进行切片的速度稍快一些,它也会导致代码更长、更复杂、更难阅读。因此,暂时使用可读版本,只有在确定它是实践中的重大瓶颈时才考虑更改它。
为了让这个函数更直观,为什么不调用它rstrip
代替filterRow
,因为它几乎做了同样的事情str.rstrip
对字符串有什么作用?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)