Python:分裂时的第一个字符

时间:2011-12-16 19:15:00

标签: python string split

我刚注意到,如果第一个字符是分隔符字符串,split方法会在结果列表中生成一个空字符串。

示例:

>>> s = '/foo/bar/blarg'
>>> s.split('/')
['', 'foo', 'bar', 'blarg']

我希望这能产生:

['foo', 'bar', 'blarg']

为什么这是理想的行为,或者这只是一个错误?

4 个答案:

答案 0 :(得分:5)

这是所需的行为,因为否则无法区分"/foo".split("/")"foo".split("/')

当我使用split并知道我不想要空字符串时,我会使用filter(None, foo.split("/"))删除它们:

>>> filter(None, "/foo//bar".split("/"))
['foo', 'bar']

答案 1 :(得分:4)

要添加到David的答案中......拆分按给定分隔符分隔字符串的各个部分。必须将空字符串视为有效部分,否则,拆分此类情况也会产生问题:

'//'.split('/')

['', '', '']以外,还应该返回什么?

答案 2 :(得分:2)

对比这些例子:

>>> s = '/foo/bar/blarg'
>>> s.split('/')
['', 'foo', 'bar', 'blarg']

VS

>>> s = 'foo/bar/blarg'
>>> s.split('/')
['foo', 'bar', 'blarg']

在列表中添加额外''意味着您可以区分开头是/还是字符串

答案 3 :(得分:1)

除了其他答案之外,防止列表开头和结尾处出现空字符串的一种方法是去除前导和尾随/个字符:

>>> s = '/foo/bar/blarg'
>>> s.strip('/').split('/')
['foo', 'bar', 'blarg']

请注意,如果字符串中间有连续的/个字符,您仍然会得到一个空字符串。