[' ',' ',' ',' ', '12 21','12 34']
我有一個像這樣的列表,其中前幾個元素是任意數量的空白。我如何刪除只包含空格的元素,以便列表變爲['12 21', '12 34']
該列表比我剛縮小的列表大很多,並且包含空格的元素數量不是固定的數字。擺脫列表中僅包含空格的一些元素
回答
使用str.strip()
和一個簡單的列表理解:
In [31]: lis=[' ',' ',' ',' ', '12 21','12 34']
In [32]: [x for x in lis if x.strip()]
Out[32]: ['12 21', '12 34']
或使用filter()
:
In [37]: filter(str.strip,lis)
Out[37]: ['12 21', '12 34']
這樣做是因爲對空字符串:
In [35]: bool(" ".strip())
Out[35]: False
幫助(str.strip ):
In [36]: str.strip?
Type: method_descriptor
String Form:<method 'strip' of 'str' objects>
Namespace: Python builtin
Docstring:
S.strip([chars]) -> string or unicode
Return a copy of the string S with leading and trailing
whitespace removed.
If chars is given and not None, remove characters in chars instead.
If chars is unicode, S will be converted to unicode before stripping
的str.isspace()
方法將返回True
一個字符串是否是完全空白字符,這樣你就可以使用以下方法:
lst = [x for x in lst if not x.isspace()]
由於這是一個大名單,你可能還需要考慮使用itertools
這樣就可以忽略空格唯一項目,而不是創建一個新的列表:
>>> from itertools import ifilterfalse
>>> l = [' ',' ',' ',' ', '12 21','12 34']
>>> for item in ifilterfalse(str.isspace, l):
... print item
...
12 21
12 34
使用'str.isspace'的一個小問題(Python 2)的缺點是,如果列表中存在unicode字符串,它會投訴。 – DSM 2013-04-22 16:52:20
我怎麼能刪除只包含空格,因此列表變得
['12 21', '12 34']
鑑於空白元素總是出現在列表的開始,那麼元素...
如果您需要修改到位列表,最優化的解決辦法是這樣的......
>>> l = [' ', ' ', ' ', ' ', '12 21','12 34']
>>> while l[0].isspace(): del l[0]
>>> print l
['12 21', '12 34']
...或者,如果你只是想遍歷非空白元素,那麼itertools.dropwhile()
似乎是最有效的方法...
>>> import itertools
>>> l = [' ', ' ', ' ', ' ', '12 21','12 34']
>>> for i in itertools.dropwhile(str.isspace, l): print i
12 21
12 34
所有其他解決方案將創建列表的副本和/或檢查每個元素,這是不必要的。
試試這個,
a=['','',1,2,3]
b=[x for x in a if x <> '']
Downvote for use <<>',因爲'''''''''''''''''''''''' – Eric 2013-04-22 16:46:22
這裏是這樣做的 「功能性」 的方式。
In [10]: a = [' ',' ',' ','12 24', '12 31']
In [11]: filter(str.strip, a)
Out[11]: ['12 24', '12 31']
這是filter
的幫助。
幫助的內置函數濾波器模塊內置:
過濾器(...) 過濾器(函數或無,序列) - >列表,元組或字符串
返回函數(item)爲true的那些序列項。如果 函數爲None,則返回true的項目。如果sequence是一個元組 或string,則返回相同的類型,否則返回一個列表。
- 1. 如何擺脫空元素
- 2. 從空列表中的錯誤僅在列表中包含偶數個元素
- 3. 不能在PHP擺脫空元素的
- 4. 列表理解,擺脫並行列表中的相應元素
- 5. DOM元素可以包含一個包含空格的ID嗎?
- 6. 網格和列表框有一些邊框我無法擺脫
- 7. 擺脫表格行之間的空白
- 8. 如何使列表中的元素與僅包含一個元素的列表進行列表?
- 9. 包含一個元素的jaxb列表
- 10. 如何擺脫IE中表格單元格內dijit.form.DropDownButton旁邊的空白空間?
- 11. 包含列表元素的列表的列表中的元素列表
- 12. 擺脫MySql中空格的麻煩
- 13. 如何擺脫行中的空格,python
- 14. 擺脫字符串中的空格
- 15. BeautifulSoup - 表 - 擺脫那些\ n
- 16. 如何擺脫列表中的列表?
- 17. 的Python如何擺脫小寫的元素列表
- 18. 擺脫一些輸出
- 19. 擺脫陣列的最後一個元素的逗號
- 20. 如何擺脫在Python列表重複的元素?
- 21. 爲ArrayList中的每個String元素擺脫空白
- 22. XSLT:顯示包含特定子元素的所有元素(並且僅包含那些元素)
- 23. 使用saveAll保存包含一些空元素的數組
- 24. 在一些候選元素中構成一個包含元素的小列表,其中每個元素的包含依賴於一個獨立的謂詞?
- 25. 擺脫空間
- 26. 我的差異包含尾隨空白 - 如何擺脫它?
- 27. 如何擺脫包含GridView的空div div
- 28. 如何刪除包含從列表中的某些元素的列表
- 29. 僅包含唯一元素的Java阻塞隊列
- 30. 如何擺脫這些空串?
列表中的'strip'函數:http://stackoverflow.com/a/16120943/989121 – georg 2013-04-22 16:47:50
我注意到大多數人似乎將「如何刪除元素......」解釋爲「我如何創建一個沒有元素的新清單......「,這是不完全相同的事情。 – Aya 2013-04-22 16:51:58