re.split在python中使用空格

Cha*_*son 5 python regex split

我有一串文字,如下所示:

'                     19,301         14,856        18,554'
Run Code Online (Sandbox Code Playgroud)

空间在哪里.

我正在尝试将其拆分为空白区域,但我需要将所有空白区域保留为新列表中的项目.像这样:

['                     ', '19,301','        ', '14,856', '        ', '18,554']
Run Code Online (Sandbox Code Playgroud)

我一直在使用以下代码:

re.split(r'( +)(?=[0-9])', item)
Run Code Online (Sandbox Code Playgroud)

它返回:

['', '                     ', '19,301', '        ', '14,856', '        ', '18,554']
Run Code Online (Sandbox Code Playgroud)

请注意,它总是将空元素添加到列表的开头.删除它很容易,但我真的很想了解这里发生了什么,所以我可以得到代码来一致地处理事情.谢谢.

lex*_*rou 4

使用该re.split方法时,如果捕获组在字符串的开头匹配,则“结果将以空字符串开头”。这样做的原因是该join方法可以表现为该方法的逆过程split

对于您的情况来说,这可能没有多大意义,其中分隔符匹配的大小不同,但如果您考虑分隔符是字符|并且您想要对它们执行连接的情况,则使用额外的空字符串会工作:

>> item = '|19,301|14,856|18,554'
>> items = re.split(r'\|', item)
>> print items
['', '19,301', '14,856', '18,554']
>> '|'.join(items)
'|19,301|14,856|18,554'
Run Code Online (Sandbox Code Playgroud)

但如果没有它,最初的管道就会丢失:

>> items = ['19,301', '14,856', '18,554']
>> '|'.join(items)
'19,301|14,856|18,554'
Run Code Online (Sandbox Code Playgroud)