为什么split()在同一个字符串上返回的元素多于split(“”)?

时间:2018-03-19 02:24:56

标签: python string python-2.7 split

我正在使用Python2.7并在同一string上使用split()和split(“”)。但是为什么split(“”)返回的元素数量少于split()。我想知道在具体的输入情况下会发生这种情况。

5 个答案:

答案 0 :(得分:5)

带有None参数(或无参数)的

str.split所有空白字符上分割,并且这不仅限于 您使用空格键输入的空间。

In [457]: text = 'this\nshould\rhelp\tyou\funderstand'

In [458]: text.split()
Out[458]: ['this', 'should', 'help', 'you', 'understand']

In [459]: text.split(' ')
Out[459]: ['this\nshould\rhelp\tyou\x0cunderstand']

可以在All the Whitespace Characters? Is it language independent?找到split(None)分割的所有空白字符的列表

答案 1 :(得分:3)

如果你在split()函数上运行help命令,你会看到:

  

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

     

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

因此,如果没有指定分隔符,则split()之间的差异将删除空字符串,而带有分隔符的字符串将被删除。

答案 2 :(得分:2)

不带参数调用的方法str.split有一些不同的行为。

首先它以任何空白字符分割。

'foo bar\nbaz\tmeh'.split() # ['foo', 'bar', 'baz', 'meh']

但它也会从输出列表中删除空字符串。

' foo bar '.split(' ') # ['', 'foo', 'bar', '']

' foo bar '.split() # ['foo', 'bar']

答案 3 :(得分:1)

在Python中,split函数在指定的特定字符串上拆分,否则在空格上拆分(然后你可以像往常一样按索引访问结果列表):

s = "Hello world! How are you?"
s.split() 
Out[9]:['Hello', 'world!', 'How', 'are', 'you?']
s.split("!")
Out[10]: ['Hello world', ' How are you?'] 
s.split("!")[0] 
Out[11]: 'Hello world' 

答案 4 :(得分:0)

根据我的经验,最大的困惑来自split()对空格的不同处理。

使用' 'None之类的分隔符会触发split()的不同行为。根据{{​​3}}。

如果未指定sep或将其设置为None,则将应用不同的拆分算法:连续的空白行将被视为单个分隔符,并且如果字符串的开头或结尾处为空白,则结果将不包含空字符串空格。

下面是一个示例,其中示例字符串具有尾随空格' ',该空格与第二个split()中传递的空格相同。因此,此方法的行为有所不同,并不是因为某些空白字符不匹配,而是更多地设计了该方法的工作方式,也许是在常见情况下为了方便起见,但对于希望split()的人来说也可能造成混淆到split

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