我尝试了一个带字符串拆分的简单示例,但得到了一些意想不到的行为。以下是示例代码:
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。那么,为什么当我明确地传入一个' '作为分隔符,它在输出列表的末尾创建一个空字符串?
答案 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>