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