首页 > 解决方案 > 在 re.split 中使用管道会导致发生额外的拆分

问题描述

我试图用|INDEX|and分割一个字符串/

re.split可以处理多个分隔符并使用管道分隔每个分隔符,因此需要对其进行转义。

我试着分开:

a = 'Tokenized/0003036v1|INDEX|3847.story.json'
re.split( r"/|\|INDEX|\|"  , a)

但是,这导致了额外的空拆分:

['Tokenized', '0003036v1', '', '3847.story.json']

为什么列表中有 4 个项目是空项目,而不是 3 个?

标签: pythonregex

解决方案


代替

re.split( r"/|\|INDEX|\|"  , a)

用这个

re.split( r"/|\|INDEX\|"  , a)

# splitting based on maxsplit argument to know where the problem is present
>>> re.split( r"/|\|INDEX|\|"  , a,1)
['Tokenized', '0003036v1|INDEX|3847.story.json']
>>> re.split( r"/|\|INDEX|\|"  , a,2)
['Tokenized', '0003036v1', '|3847.story.json']
>>> re.split( r"/|\|INDEX|\|"  , a,3)
['Tokenized', '0003036v1', '', '3847.story.json']
>>> re.split( r"/|\|INDEX\|"  , a)
['Tokenized', '0003036v1', '3847.story.json']

推荐阅读