为什么len("".split(""))给出1?蟒蛇

alv*_*vas 7 python string

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

为什么"".split("")收益率['']

>>> len("".split(" "))
1
>>> "".split(" ")
['']
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 21

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

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

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

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

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

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