【问题标题】:Why do Python " ".split() and " ".split(" ") produce different result? [duplicate]为什么 Python " ".split() 和 " ".split(" ") 会产生不同的结果? [复制]
【发布时间】:2018-12-30 06:53:45
【问题描述】:

这是当我在 Python 中将 split() 应用于具有默认定界符并使用 " " 作为定界符的空字符串时的结果。

>>> print(" ".split(" "))
['','']
>>> print(" ".split())
[]

谁能解释一下?

【问题讨论】:

  • 在 Python 2 和 Python 3 中,"".split(" ") 返回一个仅包含 一个 空字符串的列表。请仔细检查您的结果。
  • 文档有什么不清楚的地方?
  • 无法复制print "".split(" ")。而且,它看起来像Python 2.x,为什么你有Python-3.x标签?

标签: python string python-3.x split


【解决方案1】:

documentation on str.split 明确提到了不带参数拆分以及使用 ' ' 作为参数时的不同行为:

str.split(sep=None, maxsplit=-1)

[...]

如果给出 sep,则连续的分隔符不会组合在一起,并被视为分隔空字符串(例如,'1,,2'.split(',') 返回['1', '', '2'])。 sep 参数可以由多个字符组成(例如,'1<>2<>3'.split('<>') 返回['1', '2', '3'])。 用指定的分隔符分割空字符串返回['']

[...]

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

(强调我的)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2020-07-13
    • 2017-02-21
    相关资源
    最近更新 更多