在python中拆分字符串,然后将它们连接起来,使每个字符串比下一个字符串长一个子字符串

时间:2014-09-26 20:31:54

标签: python string split

基本上我想做的是拿一个像这样的字符串:

-o-pp-gg-s-h

然后把它变成一系列字符串:

-o
-o-pp
-o-pp-gg
-o-pp-gg-s
-o-pp-gg-s-h

我知道我可以通过拆分字符串(str.split('-'))来做到这一点,然后有一个连接子串的循环来产生输出('-'.join(lst))。但是,在Python中有更优雅的方法吗?

4 个答案:

答案 0 :(得分:3)

列表理解!

s = "-o-pp-gg-s-h"
ss = s.split("-")
series = ["-".join(ss[:x]) for x in range(2,len(ss)+1)]

这够优雅吗?

答案 1 :(得分:1)

>>> s='-o-pp-gg-s-h'
>>> nlist=s.split('-')
>>> for i in range(len(nlist)):
...  print '-'.join(nlist[:i])
... 


-o
-o-pp
-o-pp-gg
-o-pp-gg-s
>>> 

答案 2 :(得分:1)

>>> a
'-o-pp-gg-s-h'
>>> b=a.split('-')

>>> b
['', 'o', 'pp', 'gg', 's', 'h']
>>> for i in range(len(b)+1):
...     print '-'.join(b[0:i])


-o
-o-pp
-o-pp-gg
-o-pp-gg-s
-o-pp-gg-s-h

答案 3 :(得分:1)

仅用于变种,使用accumulate(在现代Python中):

In [23]: s = '-o-pp-gg-s-h'

In [24]: from itertools import accumulate

In [25]: list(accumulate(s.split('-'), lambda x,y: x+'-'+y))[1:]
Out[25]: ['-o', '-o-pp', '-o-pp-gg', '-o-pp-gg-s', '-o-pp-gg-s-h']