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

廉价感情. 提交于 2020-06-26 08:06:09

问题


I am using split() and split(" ") on the same string. But why is split(" ") returning less number of elements than split()? I want to know in what specific input case this would happen.


回答1:


str.split with the None argument (or, no argument) splits on all whitespace characters, and this isn't limited to just the space you type in using your spacebar.

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']

List of all whitespace characters that split(None) splits on can be found at All the Whitespace Characters? Is it language independent?




回答2:


If you run the help command on the split() function you'll see this:

split(...) S.split([sep [,maxsplit]]) -> list of strings

Return a list of the words in the string S, using sep as the delimiter string. If maxsplit is given, at most maxsplit splits are done. If sep is not specified or is None, any whitespace string is a separator and empty strings are removed from the result.

Therefore the difference between the to is that split() without specifing the delimiter will delete the empty strings while the one with the delimiter won't.




回答3:


The method str.split called without arguments has a somewhat different behaviour.

First it splits by any whitespace character.

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

But it also remove the empty strings from the output list.

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

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



回答4:


In Python, the split function splits on a specific string if specified, otherwise on spaces (and then you can access the result list by index as usual):

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' 


来源:https://stackoverflow.com/questions/49354949/why-does-split-return-more-elements-than-split-on-same-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!