Why does split() return more elements than split(“ ”) on same string?

前端 未结 5 1718
闹比i
闹比i 2021-01-15 03:52

I am using split() and split(\" \") on the same string. But why is split(\" \") returning less number of elements than split()

5条回答
  •  悲&欢浪女
    2021-01-15 04:25

    From my own experience, the most confusion had come from split()'s different treatments on whitespace.

    Having a separator like ' ' vs None, triggers different behavior of split(). According to the Python documentation.

    If sep is not specified or is None, a different splitting algorithm is applied: runs of consecutive whitespace are regarded as a single separator, and the result will contain no empty strings at the start or end if the string has leading or trailing whitespace.

    Below is an example, in which the sample string has a trailing space ' ', which is the same whitespace as the one passed in the second split(). Hence, this method behaves differently, not because of some whitespace character mismatch, but it's more of how this method was designed to work, maybe for convenience in common scenarios, but it can also be confusing for people who expect the split() to just split.

    sample = "a b "
    sample.split()
    >>> ['a', 'b']
    sample.split(' ')
    >>> ['a', 'b', '']
    

提交回复
热议问题