python分割空字符串

python分割空字符串,python,python-2.7,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() [] >>&

有人能解释一下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')
['']
按任何空格拆分会得到一个空列表,但按新行拆分会得到一个带有空字符串的列表。为什么?

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

>>> 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.']
如果没有匹配的字符,则字符两侧都没有任何内容

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

当您告诉python拆分('\n')时,它正在分隔不同的行。因此,返回它找到的第一行,即…''。如果您的输入有多行,例如: a=第1行\n第2行

它会打印出这些行

编辑:在第1行和第2行之间添加了一个enter=to a\n,基于:

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

如果给定sep,则连续分隔符不会分组在一起,并被视为分隔空字符串(例如,
'1,2'。拆分(',')
返回
['1',''2']
)。sep参数可能由多个字符组成(例如,
'123'。拆分(“”)
返回
['1','2','3']
)。使用指定的分隔符拆分空字符串将返回
[“”]

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


有关更多解释,请阅读python str.split docs()中的回答:

如果给定sep,则连续分隔符不会分组在一起,并且 被视为分隔空字符串(例如,'1',2'。拆分(',')) 返回['1','','2'])。sep参数可能由多个参数组成 字符(例如,'123'。拆分('')返回['1','2',', '3']). 使用指定的分隔符拆分空字符串将返回 [“”]

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


好啊但是为什么呢?我觉得这很奇怪。因为
split
方法查找字符,并在该点拆分字符串。由于找不到它,它返回一个空字符串@Weaselox请查看我的更新;它应该为
split
的行为提供解释和示例@好的,我明白了。我仍然觉得这很困惑。。。谢谢。@Weaselox请阅读第二部分,它非常清楚!我将在回答中添加更多解释!您还应该提到,后一种分割算法分割所有空白,而不仅仅是空白。这在文档中不是很明显。