字符串替换中的字符。清洁(dna)

2024-05-16 05:20:09 发布

您现在位置:Python中文网/ 问答频道 /正文

在数据分析中,数据以肮脏的形式呈现给我们是很常见的,错误与数据的转录或下载方式有关。因为我们知道任何dna序列都必须由四个碱基组成'a''g''t''c',所以dna中出现的任何其他字母都是错误的。编写一个函数clean(dna),该函数返回一个新的DNA字符串,其中不是a、C、G或T的每个字符都替换为N。例如,clean('goat')应返回字符串'gnat'。你可以假设dna都是小写的,但不要假设任何错误字符的性质(例如,它们甚至可能被意外地转录成数字)

clean('') → ''
clean('agct7ttczttctgactgcaacgggcaatatgtctctxtgtggattaaaaaaagagtgtcygatagcagcttctgaactggttacctgcc') → 'agctnttcnttctgactgcaacgggcaatatgtctctntgtggattaaaaaaagagtgtcngatagcagcttctgaactggttacctgcc'
clean('gtgagtaaattaaaattttnttgacttaggtcactaaptactttaaccaatataggbatagcgcacagacagataaaaattacagagtac') → 'gtgagtaaattaaaattttnttgacttaggtcactaantactttaaccaatataggnatagcgcacagacagataaaaattacagagtac'

用于循环

没有意义


Tags: 数据函数字符串clean错误字母序列字符
2条回答

我希望我不是在为你做功课。 我看到一个答案已经用.sub发布了,但是你只要求使用循环

def clean(text):
    cleaned_text=""
    for i in range(0, len(text)):
        if text[i] in "agtc":
            cleaned_text=cleaned_text+text[i]
        else:
            cleaned_text=cleaned_text+"n"
    return cleaned_text

print(clean("agct7ttczttctgactgcaacgggcaatatgtctctxtgtggattaaaaaaagagtgtcygatagcagcttctgaactggttacctgcc"))
# returns agctnttcnttctgactgcaacgggcaatatgtctctntgtggattaaaaaaagagtgtcngatagcagcttctgaactggttacctgcc

使用re.sub

Import re
dna = 'gtgagtaaattaaaattttnttgacttaggtcactaaptactttaaccaatataggbatagcgcacagacagataaaaattacagagtac'
dna = re.sub(r'[^ACTG]','N',dna.upper())
print(dna)

相关问题 更多 >