8

len("".split(" ")) == 1Trueを表示するためのpythonicの説明は何ですか?

なぜ"".split("")利回りが['']

>>> len("".split(" "))
1
>>> "".split(" ")
['']
4

4 に答える 4

22

str.split(sep)少なくとも1 つの要素を返します。テキストにsepが見つからなかった場合、その 1 つの要素が元の分割されていないテキストです。

空の文字列の場合、sep区切り文字はもちろん見つからず、ドキュメントで具体的に呼び出されます。

指定された区切り文字で空の文字列を分割すると、 が返されます['']

Nonedelimiter オプション (デフォルト)の動作に混乱している可能性があります。

sepが指定されていないか、 である場合は、None別の分割アルゴリズムが適用されます。連続する空白の実行は単一の区切り文字と見なされ、文字列の先頭または末尾に空白がある場合、結果の先頭または末尾に空の文字列は含まれません。したがって、空の文字列または空白のみで構成される文字列をNoneセパレータで分割すると、 が返されます[]

(強調鉱山)。それはstr.split(None)例外あり、規則ではありません。

于 2013-09-09T15:03:11.757 に答える
4

[] の長さはゼロです。リストに何かが含まれている場合、リストの長さは >=1 になります。この場合、[''] には 1 つの要素、空の文字列があります。したがって、それは1を与えます。

于 2013-09-09T15:04:20.940 に答える
2

これは関連している可能性があります:

split() の結果に空の文字列が返されるのはなぜですか?

split() は join() の反対になるように設計されています。

" ".join([""]) == ""
于 2013-09-09T15:03:30.563 に答える
0

文字列の長さではなく、生成されるリストの長さを示しています。

于 2013-09-09T15:04:05.580 に答える