私のリストはこんな感じです。
mylist=[ " ","abc","bgt","llko"," ","hhyt"," "," ","iuyt"]
このリスト内の文字列を含むすべてのスペースを削除するには?
私のリストはこんな感じです。
mylist=[ " ","abc","bgt","llko"," ","hhyt"," "," ","iuyt"]
このリスト内の文字列を含むすべてのスペースを削除するには?
リスト内包表記を使用できます:
new_list = [elem for elem in mylist if elem.strip()]
を使用strip()
すると、複数のスペースのみを含む文字列でさえも削除されることが保証されます。
でフィルターを使用するだけ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']
mylist = [x for x in [ " ","abc","bgt","llko"," ","hhyt"," "," ","iuyt"] if x]
... "if" 句を使用したリスト内包表記。この場合、Python が空の文字列 (および空のコンテナー) をブール値のコンテキストで "False" と見なすという事実に依存しています。
「空」が長さゼロまたはスペースのみを含むことを意味する場合は、if
句を read に変更できますif x.strip()
使用してみてください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']
>>>
>>> mylist=[ " ","abc","bgt","llko"," ","hhyt"," "," ","iuyt"]
>>> [i for i in mylist if i.strip() != '']
['abc', 'bgt', 'llko', 'hhyt', 'iuyt']