Python bite: 文字列の split
Submitted by fujiwara on 2007, October 23 - 3:08pm.
Tagged: python
Python の文字列オブジェクトは、
区切り記号で分割した要素配列を返却する split()
メソッドを提供しています。
> 'a,b,c'.split(',')
['a', 'b', 'c']
文字列の分割
メソッドのドキュメンテーションによると、
「If sep is not specified or is None, any
whitespace string is a separator」とあるので、
'a□□b□□c'.split() と
'a□□b□□c'.split('□')
(可読性上、半角空白文字を"□"で表現)は同一の挙動になるような気がするのですが、
そう思っていると咬まれます。
> 'a□□b□□c'.split()
['a', 'b', 'c']
> 'a□□b□□c'.split('□')
['a', '', 'b', '', 'c']
区切り記号指定の有無による違い
文字列メソッドのオンラインドキュメントには、 区切り記号指定の有無で挙動が変わる旨が明記されています。 この記述を踏まえて、 あらためてメソッドドキュメンテーションを読み直すと、 「If sep is not specified or is None, any whitespace string is a separator」 における赤字部分が「任意長の空白文字の連続からなる文字列」 の意味であることが理解できます。うーん、紛らわしい。
もっとも、
区切り記号 "," で "a,,b,,c"
を分割した際に [ "a", "b", "c" ] とみなしてしまう
java.util.StringTokenizer に比べれば、
随分マシな気もしますが。
Login to post comments