python で文字列を split する方法のメモ。
まず、普通に文字列を split する場合。
空文字列を split すると、空文字列が返されます。
ちなみに、rubyだと空文字列を split すると空の配列が返されるのですが、
これと同じ動作を期待していました。
返却される要素が空文字列であれば返さない、でよければ、
以下のようにすればOKです。
ただし、'a::c' を split すると、真ん中の要素が消えてしまいます。
他によい方法があるかわかりませんが、ifで空文字列を判定して、
空文字列の場合には、[] を返すようにすればOKです。
うーん、美しくない。
まず、普通に文字列を 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']