【问题标题】:How to print two or more identical letter in a string?如何在字符串中打印两个或多个相同的字母?
【发布时间】:2013-10-27 13:15:10
【问题描述】:

我有一个字符串“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 行)?

【问题讨论】:

    标签: python string for-loop


    【解决方案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
    

    【讨论】:

      【解决方案2】:
      >>> 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
      

      【讨论】:

        【解决方案3】:

        使用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
        

        【讨论】:

          【解决方案4】:

          文本拆分成一个字符串列表。

          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]
          

          它应该可以工作。

          【讨论】:

            猜你喜欢
            • 2021-08-30
            • 1970-01-01
            • 2021-04-20
            • 1970-01-01
            • 2023-03-19
            • 2019-03-24
            • 2022-08-23
            • 1970-01-01
            • 2023-02-05
            相关资源
            最近更新 更多