2015-02-01 3 views
-2

У меня есть список, состоящий из элементов, в которых у некоторых элементов есть только один пробел, который я хочу полностью удалить. Как это точно сделано эффективно?Как удалить элементы с пробелом в массиве

aList = [u'This is a test', u' ', u'Something', u' ', u'Something more', u' ', u'Another test', u' ', u' Test test'] 

Таким образом, все элементы с u' ' должен быть удален из списка полностью.

+3

Для вашего примера 'lst [:: 2]' будет это делать. –

+1

И вообще, 'lst = [элемент для элемента в lst, если элемент! = U '']' будет. – L3viathan

ответ

3

Использование списка понимание с string.strip():

>>> l = [u'This is a test', u' ', u'Something', u' ', u'Something more', u' ', u'Another test', u' ', u' Test test'] 
>>> sans_whitespace = [s for s in l if s.strip()] 
>>> sans_whitespace 
[u'This is a test', u'Something', u'Something more', u'Another test', u' Test test'] 
+0

Небольшая точка: это приведет к удалению пустых строк '' '', а не только строк пространства. (Но это вполне может быть то, что нужно.) –

+0

@ajcr: да, хорошая точка, если это требование, OP должно использовать 'isspace()' в соответствии с вашим ответом. – mhawke

3

Самый простой способ, возможно использовать список понимание, чтобы отфильтровать строки с только пробелами в

Вы можете проверить, если строка состоит только из. одно или несколько мест с isspace():

>>> [x for x in aList if not x.isspace()] 
['This is a test', 'Something', 'Something more', 'Another test', ' Test test'] 
Смежные вопросы