python拆分空字符串

时间:2015-03-10 17:53:44

标签: python python-2.7

有人可以在python 2.7.8上解释这个行为:

Python 2.7.8 (default, Nov 12 2014, 02:03:09)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = ''
>>> a.split()
[]
>>> a.split('\n')
['']

由任何空格分割得到一个空列表,但是用新行分割会给出一个带有空字符串的列表。为什么?

由于

4 个答案:

答案 0 :(得分:5)

来自python str.split docs(https://docs.python.org/2/library/stdtypes.html#str.split):

  

如果给出了sep,则连续的分隔符不会组合在一起   被认为是划定空字符串(例如,'1,,2'.split(',')   返回['1','','2'])。 sep参数可能包含多个   字符(例如,'1<><><>>>>>'<>')返回['1','2',   '3'])。使用指定的分隔符拆分空字符串   [ '']

     

如果未指定sep或为None,则使用不同的拆分算法   applied:连续空格的运行被视为单个   分隔符,结果将在开始时不包含空字符串   或者如果字符串具有前导或尾随空格则结束。所以,   拆分空字符串或只包含空格的字符串   使用无分隔符返回[]

答案 1 :(得分:4)

基于python wiki

  

str.split([sep [,maxsplit]])

     

如果给出了sep,则连续分隔符不会组合在一起,并被视为分隔空字符串(例如,'1,,2'.split(',')返回['1', '', '2'])。 sep参数可以包含多个字符(例如,'1<>2<>3'.split('<>')返回['1', '2', '3'])。使用指定的分隔符拆分空字符串将返回['']

     

如果未指定sepNone,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,结果在开始时不包含空字符串或如果字符串具有前导或尾随空格,则结束。因此,将空字符串或仅包含空格的字符串与None分隔符分开将返回[]

有关详细说明,请阅读此答案https://stackoverflow.com/a/16645307/2867928

答案 2 :(得分:1)

提供任何字符将创建一个列表:

>>> a = ''
>>> a.split()
[]
>>> a.split(' ')
['']

无论性格如何。它的行为方式是因为它查找字符,将字符串拆分为列表,并为字符的左侧和右侧提供列表项。

>>> a = 'This is a test.'
>>> a.split('a')
['This is ', ' test.']

如果没有匹配的字符,则字符的任何一侧都没有任何内容。

>>> a = 'Another test string.'
>>> a.split('*')
['Another test string.']

答案 3 :(得分:-3)

当你告诉python拆分('\ n')时,它会分隔不同的行。因此返回它找到的第一行是......''。如果您的输入有多行,例如: a = line1 \ nline2

它会打印出这些行。

编辑:在第1行和第2行之间添加\ n,输入=到\ n