2014-10-02 106 views
0

我想分割一个字符串使用多个字符分隔符,我可以保留结果中的分隔符,但它是在第一部分而不是第二部分我需要它的部分。这是我的。Python:分割字符串开始分界符而不是结束

test = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
d = 'DEF' 
for line in test: 
    s = [e+d for e in test.split(d) if e !=""] 
print s 
['ABCDEF', 'GHIJKLMNOPQRSTUVWXYZDEF'] 

我需要的是在分裂的DEF在第2部分。我将不胜感激任何帮助。

+0

有没有可能是你的字符串可能包含多个''DEF''s?如果是,那么你能否提供该案例的样本输入/输出。 – 2014-10-02 17:49:18

回答

1

使用str.partition

>>> test = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
>>> d = 'DEF' 
>>> head, sep, tail = test.partition(d) 
>>> [head, sep+tail] 
['ABC', 'DEFGHIJKLMNOPQRSTUVWXYZ'] 
+0

这工作完美,我可以修改它做另一个拆分,以减少结束。 – Nick 2014-10-02 20:00:17

0

只需添加DEF到第二个元素:

s1,s2 = test.split(d) 
print [s1,d + s2] 

或添加分割清单内:

spl = test.split(d) 
spl[-1] = d + spl[-1] 

在自己的代码,你是只需重新指定s的值,而不是每次添加到它所以你的循环是没有意义的:

for line in test: 
    s = [e+d for e in test.split(d) if e !=""] 
0

尝试这样的: -

​​