【问题标题】:Split string at upper/lower case boundaries在大写/小写边界处拆分字符串
【发布时间】:2017-11-21 18:57:34
【问题描述】:

我想在大写/小写边界处拆分以下字符串。我如何在 Python 和/或正则表达式中做到这一点?

例如,

x = 'aagaaggagatataccATGAATTTGTCGGTTTACCCCAATTTAACCAAAgaaaacctgtacaa'

split_boundaries(x) = ['aagaaggagatatacc', 
                       'ATGAATTTGTCGGTTTACCCCAATTTAACCAAA',
                       'gaaaacctgtacaa']

【问题讨论】:

    标签: python regex uppercase lowercase


    【解决方案1】:

    使用re.findall:

    import re
    x = 'aagaaggagatataccATGAATTTGTCGGTTTACCCCAATTTAACCAAAgaaaacctgtacaa'
    
    re.findall(r'[a-z]+|[A-Z]+', x)
    # ['aagaaggagatatacc', 'ATGAATTTGTCGGTTTACCCCAATTTAACCAAA', 'gaaaacctgtacaa']
    

    【讨论】:

      【解决方案2】:

      另一种根据大小写将字符串拆分为列表的方法。

      x = 'ATGAaagaaggagatatacAcATGAATTTGTCGGTTTACCCCAATTTAACCAAAgaaaacctgtacaaAaa'
      
      l=[]
      lstr=''
      ustr=''
      
      
      def createList(s):
          l.append(s)
      
      for i in list(x):
          if i.islower():
              lstr+=i
              if ustr != '':
                  createList(ustr)
              ustr = ''
          elif i.isupper():
              if lstr != '':
                  createList(lstr)
              ustr+=i
              lstr=''
      
      if list(x)[-1].islower():
          createList(lstr)
      else:
          createList(ustr)
      
      print(l)
      

      输出

      ['ATGA', 'aagaaggagatatac', 'A', 'c', 'ATGAATTTGTCGGTTTACCCCAATTTAACCAAA', 'gaaaacctgtacaa', 'A', 'aa']
      

      【讨论】:

        猜你喜欢
        • 2020-06-05
        • 2015-03-31
        • 2016-01-26
        • 1970-01-01
        • 1970-01-01
        • 2019-12-03
        • 1970-01-01
        • 1970-01-01
        • 2022-06-28
        相关资源
        最近更新 更多