0

我有一个字符串“Hello JJ”,我必须打印它,以便将彼此相邻相同的字符串字母打印在同一行。像这样。

0 
1 H
2 He
3 Hell
4 Hello
5 Hello
6 Hello JJ

我需要使用for 循环。而我使用这个的代码。

text = 'Hello.'
for position in range(0, len(text)+1):  
    print position, text[0:position]

但是如何让它同时打印相同的字母(如第 3 行和第 6 行)?

4

4 回答 4

1
text = 'Hello JJ'
counter = 0
for i in range(len(text)):
    if counter:
        counter -= 1
        continue
    for j in range(i + 1, len(text)):
        if text[j] != text[i]: break
        else: counter += 1
    print text[0:i + counter + 1]

输出

H
He
Hell
Hello
Hello 
Hello JJ
于 2013-10-27T13:20:01.640 回答
1
>>> from itertools import groupby
>>> strs = "Hello JJ"
>>> start = ''
for k, g in groupby(enumerate(strs), key=lambda x:x[1]):
    lis = list(g)
    start += ''.join(x[1] for x in lis)
    print lis[0][0], start
...     
0 H
1 He
2 Hell
4 Hello
5 Hello 
6 Hello JJ
于 2013-10-27T13:22:42.870 回答
0

将文本拆分为字符串列表。

import re
text = "hello piithon"
items = [m.group() for m in re.finditer(r"(.)(\1*)",s)]
for position in range(0, len(text)+1):
    print position, items[0:position]

它应该工作。

于 2013-10-27T13:54:47.243 回答
0

使用itertools.groupby().

from itertools import groupby
groups = [''.join(l) for g,l in groupby("Hello JJ")]
for i in range(len(groups)+1):
    print ''.join(groups[:i])

>>> 

H
He
Hell
Hello
Hello 
Hello JJ
于 2013-10-27T13:20:53.973 回答