print re.split("([0-9]{4})", "Spring2014")
结果
['Spring', '2014', '']
额外的''来自最后?我想要的列表是上面的,最后没有额外的空白项目。只丢弃额外的项目很容易,但我只是想了解为什么re.split会包含它。
答案 0 :(得分:3)
您要求re.split()
将文字拆分为4位数部分; '2014'
之前的字符串包含'Spring'
,之后的字符串为''
。
如果分隔符中有捕获组并且它在字符串的开头匹配,则结果将以空字符串开头。对于字符串的结尾也是如此:
>>> re.split('(\W+)', '...words, words...') ['', '...', 'words', ', ', 'words', '...', '']
这样,分隔符组件总是在结果列表中的相同相对索引处找到(例如,如果分隔符中有一个捕获组,第0个,第2个等等)。