如何在Python中拆分一次或多次分隔符?

Ada*_*tan 28 python string split delimiter

我有一个日志文件中的格式化字符串,如下所示:

>>> a="test                            result"
Run Code Online (Sandbox Code Playgroud)

也就是说,测试和结果被一些空格分开 - 它可能是使用格式化的字符串创建的,它给出了test一些恒定的间距.

简单拆分不会起作用:

>>> a.split(" ")
['test', '', '', '', ... '', '', '', '', '', '', '', '', '', '', '', 'result']
Run Code Online (Sandbox Code Playgroud)

split(DELIMITER, COUNT) 清除一些不必要的值:

>>> a.split(" ",1)
['test', '                           result']
Run Code Online (Sandbox Code Playgroud)

这有帮助 - 但当然,我真的需要:

['test', 'result']
Run Code Online (Sandbox Code Playgroud)

我可以使用split()后跟map+ strip(),但我想知道是否有更多的Pythonic方法来做到这一点.

谢谢,

亚当

更新:这么简单的解决方案!谢谢你们.

Kim*_*ais 54

只是不给任何分隔符?

>>> a="test                            result"
>>> a.split()
['test', 'result']
Run Code Online (Sandbox Code Playgroud)

  • 至于为什么这样做:a.split(None)是一个特例,在Python中意味着"拆分一个或多个空格字符".re.split()是一般案例解决方案. (11认同)
  • 问题是,如何用分隔符+(一个或多个)分割。您的回答是说任何空格都将被视为分隔符,这不是正确的答案 (2认同)

gho*_*g74 33

>>> import re
>>> a="test                            result"
>>> re.split(" +",a)
['test', 'result']

>>> a.split()
['test', 'result']
Run Code Online (Sandbox Code Playgroud)

  • 这是实际请求的唯一答案,"由一个或多个分隔符分隔". (6认同)

Mar*_*ers 18

这应该工作:

a.split()
Run Code Online (Sandbox Code Playgroud)

例:

>>> 'a      b'.split(' ')
['a', '', '', '', '', '', 'b']
>>> 'a      b'.split()
['a', 'b']
Run Code Online (Sandbox Code Playgroud)

文档:

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