python的split函数切分字符串时为什么会产生空字符串

群里的一个小伙伴提了一个问题,他使用split函数切分字符串得到的结果里有空字符串,他对空字符串的出现感到困惑不解。

text = '1aa2'
print(text.split('a'))      # ['1', '', '2']

这个空字符串是如何产生的呢?以a为分隔符切分时,我们认为两个a之间有一个空字符串,因此产生一个空字符串。

感觉很奇怪,但是很合理。如果不这样处理,那么结果就变成了 ['1', '2'],符合你的直觉,但这回导致一个尴尬的情况

text = '1aa2'
print(text.split('aa'))  # ['1',  '2']

字符串'1aa2' 分别以a和aa为分隔符切分,得到的结果竟然是一样的,这显然是不合逻辑的,这就好比两根油条,长度一样,你用菜刀分别以两个不同的宽度去切油条,最终两根油条切完后完全一样,这简直是匪夷所思。

split函数切分字符串时产生的字符串,是合情合理的,它避免了一个字符串以不同的分隔符切分却产生相同结果的情况发生。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案