有人可以在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')
['']
由任何空格分割得到一个空列表,但是用新行分割会给出一个带有空字符串的列表。为什么?
由于
答案 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']
)。使用指定的分隔符拆分空字符串将返回['']
。如果未指定
sep
或None
,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,结果在开始时不包含空字符串或如果字符串具有前导或尾随空格,则结束。因此,将空字符串或仅包含空格的字符串与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