【问题标题】: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']