字符串拆分使用默认分隔符与用户定义的分隔符

时间:2015-05-16 03:51:47

标签: python split

我尝试了一个带字符串拆分的简单示例,但得到了一些意想不到的行为。以下是示例代码:

def split_string(source,splitlist):
    for delim in splitlist:
        source = source.replace(delim, ' ')
    return source.split(' ')

out = split_string("This is a test-of the,string separation-code!", " ,!-")
print out
>>> ['This', 'is', 'a', 'test', 'of', 'the', 'string', 'separation', 'code', '']

正如你所看到的,当我使用space作为split()函数的分隔符参数时,我在列表的末尾有一个额外的空字符串。但是,如果我没有传递split()函数的任何参数,我在输出列表的末尾没有空字符串。

从我在python docs中读到的内容,他们说split()的默认参数是space。那么,为什么当我明确地传入一个' '作为分隔符,它在输出列表的末尾创建一个空字符串?

2 个答案:

答案 0 :(得分:15)

docs

  

如果未指定sep或为None,则使用不同的拆分算法   applied:连续空格的运行被视为单个   分隔符,结果在开头不包含空字符串   如果字符串具有前导或尾随空格,则或结束

答案 1 :(得分:-1)

如果您有多个空格分隔两个单词,则可能会发生这种情况。 例如,

'a    b'.split(' ') will return ['a', '', '', '', 'b']

但我建议你从re模块中使用split。请查看以下示例:

import re
print  re.split('[\s,; !]+', 'a b !!!!!!! ,     hello ;;;;; world')

当我们运行上述内容时,会输出[&#39; a&#39;&#39; b&#39;,&#39; hello&#39;,&#39; world&#39;] < / p>