7

私のリストはこんな感じです。

mylist=[ " ","abc","bgt","llko","    ","hhyt","  ","      ","iuyt"]

このリスト内の文字列を含むすべてのスペースを削除するには?

4

10 に答える 10

16

リスト内包表記を使用できます:

 new_list = [elem for elem in mylist if elem.strip()]

を使用strip()すると、複数のスペースのみを含む文字列でさえも削除されることが保証されます。

于 2013-08-29T09:08:48.610 に答える
4

でフィルターを使用するだけNoneです。

filter(None, mylist)

空の文字列が空白文字のみを含む文字列を意味する場合は、次を使用する必要があります。

filter(str.strip, mylist)

例:

>>> filter(None, ['', 'abc', 'bgt', 'llko', '', 'hhyt', '', '', 'iuyt'])
['abc', 'bgt', 'llko', 'hhyt', 'iuyt']
>>> filter(str.strip, [' ', 'abc', 'bgt', 'llko', ' ', 'hhyt', ' ', ' ', 'iuyt'])
['abc', 'bgt', 'llko', 'hhyt', 'iuyt']
于 2013-08-29T09:08:59.027 に答える
2
mylist = [x for x in [ " ","abc","bgt","llko"," ","hhyt"," "," ","iuyt"] if x]

... "if" 句を使用したリスト内包表記。この場合、Python が空の文字列 (および空のコンテナー) をブール値のコンテキストで "False" と見なすという事実に依存しています。

「空」が長さゼロまたはスペースのみを含むことを意味する場合は、if句を read に変更できますif x.strip()

于 2013-08-29T09:12:56.693 に答える
2

使用してみてくださいfilter(lambda x: x.strip(), mylist)

>>> mylist=[ " ","abc","bgt","llko"," ","hhyt"," "," ","iuyt"]
>>>
>>> filter(lambda x: x.strip(), mylist)
['abc', 'bgt', 'llko', 'hhyt', 'iuyt']
>>>
>>> mylist=[ " ","abc","bgt","llko","    ","hhyt","  ","      ","iuyt"]
>>>
>>> filter(lambda x: x.strip(), mylist)
['abc', 'bgt', 'llko', 'hhyt', 'iuyt']
>>>
于 2013-08-29T09:08:59.160 に答える
0
>>> mylist=[ " ","abc","bgt","llko"," ","hhyt"," "," ","iuyt"]
>>> [i for i in mylist if i.strip() != '']
['abc', 'bgt', 'llko', 'hhyt', 'iuyt']
于 2013-08-29T09:15:10.153 に答える