Python:分割时的首字符

3 投票
4 回答
1511 浏览
提问于 2025-04-17 08:31

我刚发现,如果字符串的第一个字符是分隔符,使用split方法时,结果列表中会出现一个空字符串。

举个例子:

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

我原本期待得到的是:

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

这有什么特别的原因吗?还是说这只是个错误?

4 个回答

2

对比一下这两个例子:

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

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

在你的列表中多一个 '' 意味着你可以分辨出你的字符串开头是否有一个 /

4

补充一下David的回答……split这个方法是用来把一个字符串按照指定的分隔符切分成几个部分的。如果遇到空字符串,也要把它当作一个有效的部分来处理。否则,像下面这种情况就会出现问题:

'//'.split('/')

那么,这个方法除了返回['', '', ''],还应该返回什么呢?

5

这是我们想要的行为,因为如果不这样做,就很难区分 "/foo".split("/")"foo".split("/") 这两个结果。

当我使用 split 方法,并且知道我不想要可能出现的空字符串时,我会用 filter(None, foo.split("/")) 来把它们去掉:

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

撰写回答