2016-02-24 34 views
2

我有很长的字符串,我想将它分解成更小刺,每当一个特定的模式出现了:(以下情况下123我)上的图案Python的字符串分割而不删除分隔符

my_str = '123 my string is long 123 my string is very long 123 my string is so long' 

我想要的结果为:

result = ['123 my string is long ', '123 my string is very long ', '123 my string is so long '] 

字符串的长度未知。我不想从主字符串中删除任何内容。

回答

5

您还可以使用前瞻正则表达式这仅适用:

import re 
re.split(r'.(?=123 my)', my_str) 
=> 
['123 my string is long', 
'123 my string is very long', 
'123 my string is so long'] 
+1

我觉得这是比我的功夫更好,因为分隔符可以在弦的任何地方,例如分隔符“字符串”的工作方式与您所期望的一样。 – mhawke

2

您可以分割的分隔符,然后用一个列表理解重新添加它:

my_str = '123 my string is long 123 my string is very long 123 my string is so long' 
delimiter = '123 my' 
result = ['{}{}'.format(delimiter, s) for s in my_str.split(delimiter) if s] 
print(result) 

输出

 
['123 my string is long ', '123 my string is very long ', '123 my string is so long'] 

我不知道在哪里,在过去尾随空间列表项来自您想要的输出,它不在原始字符串中,所以应该在结果中不存在。

注意,如果定界符开始在字符串的开头