Python:分割时的首字符
我刚发现,如果字符串的第一个字符是分隔符,使用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']