我有一個看起來像這樣的列表:如何刪除列表中滿足一定條件的最左/最右元素?
['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