linux 如何使用python根据小写字符对长字符串进行切片并添加到列表中?

8dtrkrch  于 2023-03-29  发布在  Linux
关注(0)|答案(3)|浏览(111)

我有一个既有大写又有小写的长字符串。如何提取小写的块并添加到列表中。谢谢。
示例:**输入:**ATGCAATTAATTG目录目录

输出:[atgcatgcatgc,ccggttaaatcggatc,aaaaaaaaatttttttt]

wfsdck30

wfsdck301#

尝试使用正则表达式沿着re.**findall**

>>> import re
>>> s = 'ATGCAATTAATTGCatgcatgcatgcAAAATTTGGGGCCCCccggttaaatcggatcTGTGCACACTCTAGAGaaaaaaaaattttttt'
>>> re.findall(r'[a-z]+', s)
['atgcatgcatgc', 'ccggttaaatcggatc', 'aaaaaaaaattttttt']
91zkwejq

91zkwejq2#

可以使用Python中的islower()方法检查字符是否为小写,然后使用循环遍历字符串,提取小写子字符串并将其追加到列表中。

input_str = "ATGCAATTAATTGCatgcatgcatgcAAAATTTGGGGCCCCccggttaaatcggatcTGTGCACACTCTAGAGaaaaaaaaattttttt"

result = []
current = ""

for char in input_str:
    if char.islower():
        current += char
    elif current:
        result.append(current)
        current = ""

if current:
    result.append(current)

print(result)

以下将是您的输出

['atgcatgcatgc', 'ccggttaaatcggatc', 'aaaaaaaaattttttt']

上面的代码遍历输入字符串的每个字符,并使用islower()方法检查它是否是小写。如果是小写,则将该字符添加到current字符串中。如果不是小写且current不为空,则将current字符串添加到result列表中,并将current重置为空字符串。最后,如果current在循环后不为空,它也会被添加到result列表中。

bz4sfanl

bz4sfanl3#

别太苛刻但你要求的

def sortletters(letters):

    List_letters = []
    Letters_Lower = ""

    for letter in list(letters):

        if letter == letter.lower():
            Letters_Lower += letter
    
        else:
            if len(list(Letters_Lower)) != 0:
                List_letters.append(Letters_Lower)
                Letters_Lower = ""

    else:
        if len(list(Letters_Lower)) != 0:
            List_letters.append(Letters_Lower)

    return List_letters

if __name__ == '__main__':
    letters = "ATGCAATTAATTGCatgcatgcatgcAAAATTTGGGGCCCCccggttaaatcggatcTGTGCACACTCTAGAGaaaaaaaaattttttt"

    print(sortletters(letters))

输出:

['atgcatgcatgc', 'ccggttaaatcggatc', 'aaaaaaaaattttttt']

相关问题