如何在字典中的两个短字符串之间得到一个字符串。。。Python

2024-09-23 20:22:20 发布

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

早上好。 我有一个字典(在python中),其中键作为名称,值作为dna序列('acgt…')。我需要从这个字典的值中得到两个特定的三个字母之间的所有字符串('atg'作为起始点,'taa'、'aag'或'tga'作为结束点)。我试了好几样东西,但都没有得到我想要的。我在网上找不到任何帮助。有人能帮我吗?谢谢

这就是我所尝试的:

我只知道如何获取两个不同指定索引之间的所有字符,但这不是我想要的:下面是一个非常小的示例:

opts= {'id1':'acgatgctagcagctagcacagctagaatgccgatgacacacagctaatggcagttaaacatcgaca‌​gctctcgcgcgcaagcgatacaccagctagaccagattaaaag', 'id2':'atgagacacacacacacagggggggcggcgcgcatacatttttacacacatacattaaatgacacagccacag‌​cgacagccagccagccatttttattttttaaagatgcaccgatacacaca'}; 
keys=list(opts.keys())
print(keys)
value=list(opts.values())
print(value)
i='atg'
j='taa' 
for i in range (len(value)): 
  for j in range(i): 
    print(value[j:i])

Tags: in名称for字典valuerange序列keys
2条回答

这个问题可以通过使用Python的find函数来解决。因为您的开始是固定的,结束可以是三个字符串中的一个,所以我们将循环输入字符串以找到匹配的字符串。你知道吗

str = "acgatgctagcagctagcacagctagaatgccgatgacacacagctaatggcagttaaacatcgaca‌​gctctcgcgcgcaagcgatacaccagctagaccagattaaaag"

def str_between( str, first, last ):
    start = str.find( first ) + len( first )
    end = str.find( last[0], start )
    index = 1
    while(end == -1 and index < len(last) ):
            end = str.find( last[index], start )
            index= index + 1
    if end !=-1:
            return str[start:end]
    else:
            return ''

使用两个参数调用此函数,如下所述。必须将每个键的值作为输入传递。你知道吗

output = str_between( str, "atg", ["taa","aag","tga"] )
import re
    d = {'id1':'acgatgctagcagctagcacagctagaatgccgatgacacacagctaatggcagttaaacatcgaca‌​gctctcgcgcgcaagcgatacaccagctagaccagattaaaag',
         'id2':'atgagacacacacacacagggggggcggcgcgcatacatttttacacacatacattaaatgacacagccacag‌​cgacagccagccagccatttttattttttaaagatgcaccgatacacaca'}

    for k,v in d.items():
        dna = re.split(r'\W',v)
        for el in dna:
            if el:
             mo= re.search(r'(atg.*taa|atg.*tga|atg.*aag)', el)
             if mo:
                 print(mo.group(1))

    atgagacacacacacacagggggggcggcgcgcatacatttttacacacatacattaa
    atgctagcagctagcacagctagaatgccgatgacacacagctaatggcagttaa

相关问题 更多 >