【问题标题】:Return a string from another string based off number and order of specific substrings根据特定子字符串的数量和顺序从另一个字符串返回一个字符串
【发布时间】:2017-08-25 05:16:06
【问题描述】:

假设我有一个字符串,例如

s = "左-左-右-右-左"

和一个空字符串 n = ''

从左到右读取该字符串,读取出现的左右数量,并为每个左边添加一个“a”,为每个出现的右边添加一个“b”。

换句话说,像

这样的函数
def convert(s):

会返回'aabba'

我正在考虑 s.count 的思路,但是 b 需要在 a 之间,并且 count 不会告诉您子字符串发生的位置。

【问题讨论】:

    标签: python string


    【解决方案1】:

    最简单的方法是用a替换left,用b替换right。它应该工作

    s = "left-left-right-right-left"
    s = s.replace("left","a")
    s=s.replace("right","b")
    s=s.replace("-","")
    

    【讨论】:

    • 欢迎。如果这是您需要的,请接受解决方案。
    【解决方案2】:

    最简单的解决方案。

    def convert(s):
        s = s.replace("left", "a")
        s = s.replace("right", "b")
        s = s.replace("-", "")
        return s
    

    def convert(s):
        return s.replace("left", "a").replace("right", "b").replace("-", "")
    

    【讨论】:

      【解决方案3】:

      我尝试了递归解决方案。

      def rec_search(s, n):
          if len(s) is 0:
              return n
      
          if s[-len('left'):] == 'left':
              return rec_search(s[:-len('-left')], n) + 'a'
      
          return rec_search(s[:-len('-right')], n) + 'b'
      
      
      
      print rec_search('left-left-right-right-left', '')
      

      【讨论】:

        【解决方案4】:

        这也可以使用正则表达式sub() 来完成,如下所示:

        import re
        
        s = "left-left-right-right-left"
        print re.sub('left|right|-', lambda x: {'left':'a', 'right':'b', '-':''}[x.group(0)], s)
        

        给你:

        aabba
        

        它的工作原理是将任何 left right| 替换为在字典中查找替换文本的函数。

        【讨论】:

          猜你喜欢
          • 2021-03-27
          • 2012-10-15
          • 1970-01-01
          • 2022-01-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-02
          • 2020-12-07
          相关资源
          最近更新 更多