dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

python で文字列を split

2018-11-25 14:57:42 | python
python で文字列を split する方法のメモ。

まず、普通に文字列を split する場合。
>>> str = 'a:b:c'
>>> str.split(':')
['a', 'b', 'c']


空文字列を split すると、空文字列が返されます。
>>> str = ''
>>> str.split(':')
['']


ちなみに、rubyだと空文字列を split すると空の配列が返されるのですが、
これと同じ動作を期待していました。
irb(main):001:0> ''.split(':')
=> []


返却される要素が空文字列であれば返さない、でよければ、
以下のようにすればOKです。
>>> str = ''
>>> [x for x in str.split(':') if x != '']
[]


ただし、'a::c' を split すると、真ん中の要素が消えてしまいます。
>>> str = 'a::c'
>>> [x for x in str.split(':') if x != '']
['a', 'c']


他によい方法があるかわかりませんが、ifで空文字列を判定して、
空文字列の場合には、[] を返すようにすればOKです。
うーん、美しくない。
>>> str = ''
>>> if str == '':
...   []
... else:
...   str.split(':')
...
[]

>>> str = 'a::c'
>>> if str == '':
...   []
... else:
...   str.split(':')
...
['a', '', 'c']