APPGIS
APPGIS

Reputation: 353

Python remove empty element by list

i have this list that contains an empty element:

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', ' ']

how i can remove this '' empty element? I have try in this way:

[x for x in list if all(x)]

but the elements are not delete Any help? Thanks

Upvotes: 0

Views: 9275

Answers (4)

Santhosh Kumar HN
Santhosh Kumar HN

Reputation: 71

Removing empty items from list. Here empty items might be in single space or multiple space within quotes. So, use strip() function in list comprehension.

Ex:

temp_str = '      || 0X0C    ||   0X00000   ||   0X00094   ||   0X00E8C   ||           IN_OPER   ||  000000e8cff7e000 || '
temp_str.split('||')
# result: ['      ', ' 0X0C    ', '   0X00000   ', '   0X00094   ', '   0X00E8C   ', '           IN_OPER   ', '  000000e8cff7e000 ', ' ']

temp_list = [ x for x in temp_str.split('||') if x]
temp_list
# result: ['      ', ' 0X0C    ', '   0X00000   ', '   0X00094   ', '   0X00E8C   ', '           IN_OPER   ', '  000000e8cff7e000 ', ' ']

temp_list = [ x for x in temp_str.split('||') if x.strip()]
temp_list
# result: [' 0X0C    ', '   0X00000   ', '   0X00094   ', '   0X00E8C   ', '           IN_OPER   ', '  000000e8cff7e000 ']

temp_list = [ x.strip() for x in temp_str.split('||') if x.strip()]
temp_list
# result: ['0X0C', '0X00000', '0X00094', '0X00E8C', 'IN_OPER', '000000e8cff7e000']

Upvotes: 0

Flurin
Flurin

Reputation: 679

First of all. Make sure to not call your list list. That's a built-in type and will cause problems later. I renamed it to lst. Then you can filter the list the following way:

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]

This will remove all kinds of whitepace elements like ' ' or ' ' etc.

EDIT:

As corn3lius pointed out, this would work too:

filtered = [x for x in lst if x.strip()]

Upvotes: 10

Thomas
Thomas

Reputation: 185

Removing all items that not is ' ' i.e. the empty string is the same thing as building a set with all elements from the first set that has length > 0. This one liner takes care of that:

a = ['', 'apple', '', 'peach']
b = [i for i in a if i != '']

Upvotes: 0

Bastnt
Bastnt

Reputation: 13

You can add a condition in comprehension list:

l = ['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', ' ']

print([l for l in list if l != ' '])

Upvotes: 0

Related Questions