为什么len(“”。split(“”))给出1?蟒蛇

时间:2013-09-09 15:00:17

标签: python string

len("".split(" ")) == 1显示True的pythonic解释是什么?

为什么"".split("")会产生['']

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

4 个答案:

答案 0 :(得分:20)

str.split(sep)返回至少一个元素。如果在文本中找不到 sep ,那么该元素就是原始的未分割文本。

对于空字符串,当然永远不会找到 sep 分隔符,并且在文档中特别指出:

  

使用指定的分隔符拆分空字符串将返回['']

您可能会对None分隔符选项(默认值)的行为感到困惑:

  

如果未指定 sep None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,结果将不包含空字符串如果字符串具有前导或尾随空格,则为开始或结束。 因此,将空字符串或仅包含空格的字符串与None分隔符分开会返回[]

(强调我的)。这使str.split(None)成为例外,而不是规则。

答案 1 :(得分:4)

[]的长度为零。如果列表中包含任何内容,那么任何内容都会包含 长度> = 1。在这种情况下,['']中有一个元素:空字符串。所以它给了一个。

答案 2 :(得分:2)

这可能是相关的:

Why are empty strings returned in split() results?

split()旨在与join()和:

相反
" ".join([""]) == ""

答案 3 :(得分:0)

它告诉你生成的列表的长度,而不是字符串的长度。