Pythonでは、split()
関数を使って文字列を特定の区切り文字で分割することができます。しかし、この操作を行うと、結果のリストに空文字列が含まれることがあります。これは、区切り文字が連続している場合や、文字列の先頭や末尾に区切り文字がある場合に発生します。
空文字列を除去するための一般的な方法は、filter()
関数を使用することです。この関数は、第一引数に関数を、第二引数にリストを取り、リストの各要素に対して関数を適用し、その結果が真となる要素だけを残した新しいリストを生成します。以下に例を示します。
s = '/segment/segment/'
f = filter(None, s.split('/'))
このコードでは、split('/')
により文字列s
が/
で分割され、その結果のリストがfilter()
関数に渡されます。None
は、要素が真となるかどうかを判定するための関数として働きます。つまり、空文字列(これは偽と評価されます)が除去されます。
また、リスト内包表記を使って同様の操作を行うこともできます。以下に例を示します。
s = 'abc,,fefdaf,,123fad,,fsdfa'
[x for x in s.split(',') if x]
このコードでは、s.split(',')
により文字列s
が,
で分割され、その結果のリストの各要素x
に対して、if x
が真となる(つまり、x
が空文字列でない)場合だけを残します。
以上のように、Pythonではfilter()
関数やリスト内包表記を使って、split()
の結果から空文字列を簡単に除去することができます。これらのテクニックを覚えておくと、文字列操作がよりスムーズになります。