如何在不同的定系数上拆分字符串,但要保持输出某些定界符?(令牌字符串)



更具体地说,我想在任何非alpha数字字符上拆分一个字符串,但是在定界符不是白空间的情况下,我想保留它。也就是说,输入:

my_string = 'Hey, I'm 9/11 7-11'

我想得到:

['Hey' , ',' , 'I' , "'" , 'm', '9' , '/' , '11', '7' , '-' , '11']

没有列表的列表元素。

我尝试了以下内容:

re.split('([/'-_,.;])|s', my_string)

但输出:

['Hey', ',', '', None, 'I', "'", 'm', None, '9', '/', '11', None, '7', '-', '11']

如何在没有"不必要"迭代的情况下解决这个问题?

也我在逃脱后斜切角色时也有一些麻烦,因为'\\'似乎不起作用,所以关于如何解决此问题的任何想法?

非常感谢。

您可以使用

import re
my_string = "Hey, I'm 9/11 7-11"
print(re.findall(r'w+|[^ws]', my_string))
# => ['Hey', ',', 'I', "'", 'm', '9', '/', '11', '7', '-', '11']

请参阅Python Demo

w+|[^ws]正则匹配1 单词char(字母,数字,_符号(或一个单个字符或单个字符。

顺便说一句,要将后斜线与正则义务匹配,您需要在原始字符串文字(r'\'(中使用\,或在常规的字符串('\\'(中使用4个后斜线。建议使用原始字符串文字来定义Python中的正则表面图案。

最新更新