为什么re.split()在生成的List的末尾返回一个额外的空白?

时间:2014-03-28 19:23:58

标签: python regex python-2.7 split

print re.split("([0-9]{4})", "Spring2014")

结果

['Spring', '2014', '']

额外的''来自最后?我想要的列表是上面的,最后没有额外的空白项目。只丢弃额外的项目很容易,但我只是想了解为什么re.split会包含它。

1 个答案:

答案 0 :(得分:3)

您要求re.split()将文字拆分为4位数部分; '2014'之前的字符串包含'Spring',之后的字符串为''

这是documented behaviour

  

如果分隔符中有捕获组并且它在字符串的开头匹配,则结果将以空字符串开头。对于字符串的结尾也是如此:

>>> re.split('(\W+)', '...words, words...')
['', '...', 'words', ', ', 'words', '...', '']
     

这样,分隔符组件总是在结果列表中的相同相对索引处找到(例如,如果分隔符中有一个捕获组,第0个,第2个等等)。