如何在python中创建匹配字符串的函数
我是python新手,尝试创建一个匹配字符串的函数如何在python中创建匹配字符串的函数,python,python-2.7,Python,Python 2.7,我是python新手,尝试创建一个匹配字符串的函数 N="TAG" K="L" D="E" g4 = 'NKXD' protein = 'MASEIHMTGPMCLIENTNGRLMANPEALKILSAITQPMVVVAIVGLYRTGKSYLMNKLAGKKKGFSLGSTVQSHTKGIWMWCVPHPKKPGHILVLLDTEGLGDVEKGDNQNDSWIFALAVLLSSTFVYNSIGTINQQAMDQLYYVTELTHRIRSKSSPDENENEVEDSADFVSFFPDFVW
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
在第三列中,我没有得到预期的输出。我只需要以下条件下的特殊字母不匹配(仅此字母)
条件:
T或A或G
L或Q
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
亲爱的,请帮帮我,我正试图得到预期的结果,但没有得到