Python按列表删除空元素

APP*_*GIS 0 list python-2.7

我有一个包含一个空元素的列表:

list = ['Caramanico Terme', ' ', 'Castellafiume', ' ', 'Castelvecchio Subequo',    ' ', 'Falesia di ovindoli', ' ', 'Fara San Martino', ' ', "L'Aquila - Madonna      d'Appari", ' ', 'La Palma Pazza (Bisegna AQ)', ' ', 'Liscia Palazzo', ' ', 'Luco dei marsi', ' ', 'Montebello di Bertona', ' ', 'Monticchio', ' ', 'Palena', ' ', 'Pennadomo', ' ', 'Pennapiedimonte', ' ', 'Pescomarrino', ' ', 'Petrella', ' ', 'Pianezza', ' ', 'Pietrasecca', ' ', ' ', 'PietrePiane', ' ', 'Pizzi di Lettopalena (loc. Fonte della Noce)', ' ', 'Placche di Bini', ' ', 'Roccamorice', ' ', 'Sasso di Lucoli', ' ', 'Villetta Barrea', ' ']
Run Code Online (Sandbox Code Playgroud)

我怎样才能删除这个''空元素?我已经尝试过这种方式:

[x for x in list if all(x)]
Run Code Online (Sandbox Code Playgroud)

但是元素不能删除有没有帮助?谢谢

Flu*_*rin 6

首先。确保不拨打您的清单list。这是内置类型,以后会引起问题。我将其重命名为lst。然后,您可以通过以下方式过滤列表:

lst = ['Caramanico Terme', ' ', 'Castellafiume', ' ', 'Castelvecchio Subequo',    ' ', 'Falesia di ovindoli', ' ', 'Fara San Martino', ' ', "L'Aquila - Madonna      d'Appari", ' ', 'La Palma Pazza (Bisegna AQ)', ' ', 'Liscia Palazzo', ' ', 'Luco dei marsi', ' ', 'Montebello di Bertona', ' ', 'Monticchio', ' ', 'Palena', ' ', 'Pennadomo', ' ', 'Pennapiedimonte', ' ', 'Pescomarrino', ' ', 'Petrella', ' ', 'Pianezza', ' ', 'Pietrasecca', ' ', ' ', 'PietrePiane', ' ', 'Pizzi di Lettopalena (loc. Fonte della Noce)', ' ', 'Placche di Bini', ' ', 'Roccamorice', ' ', 'Sasso di Lucoli', ' ', 'Villetta Barrea', ' ']
filtered = [x for x in lst if len(x.strip()) > 0]
Run Code Online (Sandbox Code Playgroud)

这将删除各种白色元素,例如' '' '等等。

编辑

正如corn3lius指出的那样,这也可以工作:

filtered = [x for x in lst if x.strip()]
Run Code Online (Sandbox Code Playgroud)

  • 或者你可以这样做`filtered = [x for x in lst if x.strip()]` (2认同)