2017-11-21 31 views
-2

大文字/小文字の境界で次の文字列を分割したいと思います。私はPythonや正規表現でこれをどうやって行うのでしょうか?例えば大文字/小文字の境界で分割文字列

x = 'aagaaggagatataccATGAATTTGTCGGTTTACCCCAATTTAACCAAAgaaaacctgtacaa' 

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

答えて

4

使用re.findall

import re 
x = 'aagaaggagatataccATGAATTTGTCGGTTTACCCCAATTTAACCAAAgaaaacctgtacaa' 

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

ケースに基づいてリストに文字列を分割する別の方法。

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'] 
関連する問題