【问题标题】:Python: str.split() - is it possible to only specify the "limit" parameter?Python:str.split() - 是否可以只指定“限制”参数?
【发布时间】:2015-05-25 11:41:59
【问题描述】:

我想在 空格(默认行为) 上拆分一个字符串,但我希望它只拆分一次 - 即我希望它返回一个最多包含 2 个项目的数组。

如果不可能 - 即如果要指定限制,我还必须指定模式 - 你能告诉我如何指定默认模式吗?

【问题讨论】:

  • 这在文档中有明确说明; None 是默认行为。
  • 顺便说一句,我注意到在 Python3 中他们添加了一个关键字“maxsplit”
  • maxsplit 可以在 str.split 中找到,最早可以追溯到 Python 2.0。
  • @AshwiniChaudhary: 当然,Py2 str.split() 可以采用 maxsplit arg,但它是位置 arg,而不是关键字 arg,因此要在 Py2 中使用 maxsplit 和默认拆分,您必须指定None 作为分隔符。
  • 是的。 'a b c'.split(maxsplit=1) -> ['a', 'b c']

标签: python string


【解决方案1】:

这行得通:

>>> 'a b c'.split(None, 1)
['a', 'b c']

文档字符串:

S.split(sep=None, maxsplit=-1) -> 字符串列表

返回 S 中的单词列表,使用 sep 作为 分隔符字符串。如果给定 maxsplit,最多 maxsplit 拆分完成。如果 sep 未指定或为无,则任何 空白字符串是分隔符,空字符串是 从结果中删除。

您应该在交互式提示下进行探索:

>>> help('a'.split)

在 IPython 中只需使用问号:

In [1]:  s = 'a'
In [2]:  s.split?

我建议使用IPython,尤其是笔记本。这使得这种探索更加方便。

【讨论】:

    【解决方案2】:

    如果您指定None 作为分隔符,您将获得默认行为:

    str.split(None, maxsplit)
    

    S.split([sep [,maxsplit]]) -> 字符串列表

    返回字符串 S 中的单词列表,使用 sep 作为 分隔符字符串。如果给定 maxsplit,最多 maxsplit 拆分完成。如果 sep 未指定或为无,则任何 空白字符串是一个分隔符,空字符串被删除 结果。

    【讨论】:

      【解决方案3】:

      在连续的空白处拆分字符串 最多 maxsplit††

      如果字符串有前导或尾随空格,则结果列表将包含 no 前导或尾随空字符串 ("")
      †† 从左到右拆分。要以其他方式拆分(从右到左),请使用 str.<strong>r</strong>split() 方法(需要 Python 2.4+)


      Python 2

      str.<strong>split</strong>(<em>sep</em>[, <em>maxsplit</em>]])

      使用str.split(None, <em>maxsplit</em>)

      注意
      <em>sep</em> 指定为None 未指定sep

      str.split(None, -1) str.split() str.split(None)


      Python 3

      str.split(<em>sep</em>=None, <em>maxsplit</em>=-1)

      选项 A:坚持使用位置参数(Python 2 选项):str.split(None, <em>maxsplit</em>)
      >>> ' 4 2 0 '.split(None, 420) ['4', '2', '0']

      选项 B(个人偏好,使用关键字参数):str.split(maxsplit=<em>maxsplit</em>)

      >>>'4 2 0'.split(maxsplit=420)`
      ['4', '2', '0']
      

      【讨论】:

        猜你喜欢
        • 2011-11-12
        • 2015-03-25
        • 2011-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-05
        • 2016-04-13
        • 2020-04-12
        相关资源
        最近更新 更多