Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中创建匹配字符串的函数_Python_Python 2.7 - Fatal编程技术网

如何在python中创建匹配字符串的函数

如何在python中创建匹配字符串的函数,python,python-2.7,Python,Python 2.7,我是python新手,尝试创建一个匹配字符串的函数 N="TAG" K="L" D="E" g4 = 'NKXD' protein = 'MASEIHMTGPMCLIENTNGRLMANPEALKILSAITQPMVVVAIVGLYRTGKSYLMNKLAGKKKGFSLGSTVQSHTKGIWMWCVPHPKKPGHILVLLDTEGLGDVEKGDNQNDSWIFALAVLLSSTFVYNSIGTINQQAMDQLYYVTELTHRIRSKSSPDENENEVEDSADFVSFFPDFVW

我是python新手,尝试创建一个匹配字符串的函数

N="TAG"
K="L"
D="E"

g4 = 'NKXD'
protein = 'MASEIHMTGPMCLIENTNGRLMANPEALKILSAITQPMVVVAIVGLYRTGKSYLMNKLAGKKKGFSLGSTVQSHTKGIWMWCVPHPKKPGHILVLLDTEGLGDVEKGDNQNDSWIFALAVLLSSTFVYNSIGTINQQAMDQLYYVTELTHRIRSKSSPDENENEVEDSADFVSFFPDFVWTLRDFSLDLEADGQPLTPDEYLTYSLKLKKGTSQKDETFNLPRLCIRKFFPKKKCFVFDRPVHRRKLAQLEKLQDEELDPEFVQQVADFCSYIFSNSKTKTLSGGIQVNGPRLESLVLTYVNAISSGDLPCMENAVLALAQIENSAAVQKAIAHYEQQMGQKVQLPTETLQELLDLHRDSEREAIEVFIRSSFKDVDHLFQKELAAQLEKKRDDFCKQNQEASSDRCSALLQVIFSPLEEEVKAGIYSKPGGYRLFVQKLQDLKKKYYEEPRKGIQAEEILQTYLKSKESMTDAILQTDQTLTEKEKEIEVERVKAESAQASAKMLQEMQRKNEQMMEQKERSYQEHLKQLTEKMENDRVQLLKEQERTLALKLQEQEQLLKEGFQKESRIMKNEIQDLQTKMRRRKACTIS'
功能-到目前为止,我已经完成了:

def g4_match(g4,protein):
  N = "NTAG"
  K = "KLQ"
  D = "DE"
  spl_mismatch, mismatch = (0,0)
  for x,y in zip(g4,protein):
    if not (x == 'X' or y == x):
      if(x == 'T' and y in N):
        spl_mismatch+=1
      elif(x == 'L' and y in K):
        spl_mismatch+=1
      elif(x == 'E' and y in D):
        spl_mismatch+=1
      else:
        mismatch+=1
    if mismatch > 0 or spl_mismatch > 2:
        return False
  return True

print g4_match(g4,protein)
X可以是任何东西,如果N不是,那么检查T,A,G,或者如果K不是,那么检查L,或者如果D不是,那么检查E

我们的特殊字符是N==N,T,A,G,K==K,Q和D==D,E,但如果在这种情况下存在N,则不存在不匹配。我只需要两个特殊的字母不匹配数据,或者没有像NKXD X一样的不匹配数据

示例

TLKD此处T和L为特殊不匹配,ALRD此处A和L为特殊不匹配,TKJE-此处T和E为特殊不匹配,NKID此类型数据此处无特殊不匹配

编辑后获取输出

((44, 'GLYRTGK'), (86, 'KKPG'), (126, 'VYNS'), (165, 'EDSAD'))

((44, 'GLYRTGK'), (86, 'KKPG'), (127, 'YNSI'), (165, 'EDSAD'))

((44, 'GLYRTGK'), (86, 'KKPG'), (128, 'NSIG'), (165, 'EDSAD'))

((44, 'GLYRTGK'), (86, 'KKPG'), (129, 'SIGT'), (165, 'EDSAD'))

((44, 'GLYRTGK'), (86, 'KKPG'), (130, 'IGTI'), (165, 'EDSAD'))
((44, 'GLYRTGK'), (86, 'KKPG'), (126, 'NKID'), (165, 'EDSAD')) - Here no mismatch, 

((44, 'GLYRTGK'), (86, 'KKPG'), (127, 'TQSD'), (165, 'EDSAD'))- here T, Q is the special mismatch

((44, 'GLYRTGK'), (86, 'KKPG'), (128, 'ALDD'), (165, 'EDSAD')) - here A, L is special mismatch

((44, 'GLYRTGK'), (86, 'KKPG'), (129, 'NQGE'), (165, 'EDSAD')) - here Q, E is the special mismatch

((44, 'GLYRTGK'), (86, 'KKPG'), (130, 'GLYD'), (165, 'EDSAD')) - here G, L is the special mismatch
在第三列中,我没有得到预期的输出。我只需要以下条件下的特殊字母不匹配(仅此字母)

条件:

  • 如果N不存在,则特殊不匹配允许N可以是
    T或A或G

  • 如果K不存在,则特殊不匹配仅允许
    L或Q

  • 如果不存在D,则替换D,然后允许特殊不匹配
    E

  • 注意:一次只能应用两个条件

    预期产出

    ((44, 'GLYRTGK'), (86, 'KKPG'), (126, 'VYNS'), (165, 'EDSAD'))
    
    ((44, 'GLYRTGK'), (86, 'KKPG'), (127, 'YNSI'), (165, 'EDSAD'))
    
    ((44, 'GLYRTGK'), (86, 'KKPG'), (128, 'NSIG'), (165, 'EDSAD'))
    
    ((44, 'GLYRTGK'), (86, 'KKPG'), (129, 'SIGT'), (165, 'EDSAD'))
    
    ((44, 'GLYRTGK'), (86, 'KKPG'), (130, 'IGTI'), (165, 'EDSAD'))
    
    ((44, 'GLYRTGK'), (86, 'KKPG'), (126, 'NKID'), (165, 'EDSAD')) - Here no mismatch, 
    
    ((44, 'GLYRTGK'), (86, 'KKPG'), (127, 'TQSD'), (165, 'EDSAD'))- here T, Q is the special mismatch
    
    ((44, 'GLYRTGK'), (86, 'KKPG'), (128, 'ALDD'), (165, 'EDSAD')) - here A, L is special mismatch
    
    ((44, 'GLYRTGK'), (86, 'KKPG'), (129, 'NQGE'), (165, 'EDSAD')) - here Q, E is the special mismatch
    
    ((44, 'GLYRTGK'), (86, 'KKPG'), (130, 'GLYD'), (165, 'EDSAD')) - here G, L is the special mismatch
    

    我需要像上面预期的那样的输出编辑代码:我已经试着按照你的要求做了。如果将蛋白质设置为“NKSD”、“TLSD”或“NQIE”,则输出为真。如果将蛋白质设置为“HKSD”或“TQIE”,则输出将为假

    def g4_match(g4,protein):
    
        spl_mismatch, mismatch = (0,0)
    
        for x,y in zip(g4,protein):
    
            if (x == 'N'):
                if (y == 'N'):
                    pass
                elif (y != 'N' and y in 'TAG'):
                    spl_mismatch+=1
                else:
                    mismatch+=1
    
            if (x == 'K'):
                if (y == 'K'):
                    pass
                elif (y != 'K' and y in 'LQ'):
                    spl_mismatch+=1
                else:
                    mismatch+=1
    
            if (x == 'X'):
                pass
    
            if (x == 'D'):
                if (y == 'D'):
                    pass
                elif (y == 'E'):
                    spl_mismatch+=1
                else:
                    mismatch+=1
    
        if mismatch > 0 or spl_mismatch > 2:
            return False
    
        return True
    

    编辑代码:我试着按照你的要求做。如果将蛋白质设置为“NKSD”、“TLSD”或“NQIE”,则输出为真。如果将蛋白质设置为“HKSD”或“TQIE”,则输出将为假

    def g4_match(g4,protein):
    
        spl_mismatch, mismatch = (0,0)
    
        for x,y in zip(g4,protein):
    
            if (x == 'N'):
                if (y == 'N'):
                    pass
                elif (y != 'N' and y in 'TAG'):
                    spl_mismatch+=1
                else:
                    mismatch+=1
    
            if (x == 'K'):
                if (y == 'K'):
                    pass
                elif (y != 'K' and y in 'LQ'):
                    spl_mismatch+=1
                else:
                    mismatch+=1
    
            if (x == 'X'):
                pass
    
            if (x == 'D'):
                if (y == 'D'):
                    pass
                elif (y == 'E'):
                    spl_mismatch+=1
                else:
                    mismatch+=1
    
        if mismatch > 0 or spl_mismatch > 2:
            return False
    
        return True
    

    您的代码在哪些方面不起作用?你期望得到什么样的结果?它们与您得到的相比如何?亲爱的,通过这段代码,我没有得到预期的输出。我觉得我的逻辑或是什么不对。请建议。。我想允许两个不匹配的特殊字符
    N=“TAG”,K=“LQ”,D=“E”
    您的代码在哪些方面不起作用?你期望得到什么样的结果?它们与您得到的相比如何?亲爱的,通过这段代码,我没有得到预期的输出。我觉得我的逻辑或是什么不对。请建议。。我想允许两个不匹配的特殊字符
    N=“TAG”,K=“LQ”,D=“E”
    亲爱的,将
    false
    作为输出。我已经在那里编辑了我的完整脚本,我正在使用这个函数。你能检查一下吗?我想你不需要在g4_匹配(X,Y)中再次检查不匹配。你已经检查了匹配(X,Y)中的不匹配,希望这有帮助。亲爱的,我已经编辑了我的问题并获得了输出。。。我已经编辑了预期输出请帮助我获取预期输出亲爱的,在第三列中,我只想在
    NKXD
    不在
    1位置时才允许。N可以是T、A或G,并且位于
    2的位置。K可以是L或Q,并且位于
    3的位置。D可以是E
    。但一次只能适用两个条件。例如:
    1和2,或1或3,或2或3
    亲爱的,请帮帮我,我正在尝试获得预期结果,但没有得到亲爱的,
    false
    作为输出。我已经在那里编辑了我的完整脚本,我正在使用这个函数。你能检查一下吗?我想你不需要在g4_匹配(X,Y)中再次检查不匹配。你已经检查了匹配(X,Y)中的不匹配,希望这有帮助。亲爱的,我已经编辑了我的问题并获得了输出。。。我已经编辑了预期输出请帮助我获取预期输出亲爱的,在第三列中,我只想在
    NKXD
    不在
    1位置时才允许。N可以是T、A或G,并且位于
    2的位置。K可以是L或Q,并且位于
    3的位置。D可以是E
    。但一次只能适用两个条件。例如:
    1和2,或1或3或2或3
    亲爱的,请帮帮我,我正试图得到预期的结果,但没有得到