【问题标题】:String split with default delimiter vs user defined delimiter使用默认分隔符与用户定义的分隔符拆分字符串
【发布时间】:2015-05-16 03:51:47
【问题描述】:

我尝试了一个简单的字符串拆分示例,但出现了一些意外行为。这是示例代码:

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', '']

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

根据我在 python 文档中读到的内容,他们说 split() 的默认参数是空格。那么,为什么当我显式传入一个 ' ' 作为分隔符时,它会在输出列表的末尾创建一个空字符串?

【问题讨论】:

    标签: python split


    【解决方案1】:

    docs

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

    【讨论】:

      【解决方案2】:

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

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

      但我建议您使用从 re 模块拆分。检查以下示例:

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

      当我们运行上面的代码时,它会输出 ['a', 'b', 'hello', 'world']

      【讨论】:

        猜你喜欢
        • 2013-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多