私はPythonで新しく、文字列を一致させる関数を作成しようとしています。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この場合、不一致はありません。私は2つの特殊な文字の不一致のデータだけを必要とするか、NKXD Xのような不一致はありません。
例
TLKDは、ここでTおよびLは、特別なミスマッチであるとALRDここでA及びLは、特別なミスマッチとTKJEある - ここでTおよびEは特別なミスマッチとNKIDここで、この種のデータ特別なミスマッチです。
編集は3列目の出力
((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'))
を取得した後、私が期待される出力を得ていないのです。 Nではないが、その後、特別な不一致がNをT or A or G
することができ許可した場合の代わりに
:私は条件以下の(のみ、この文字)あたりとしてのみ特殊な文字の不一致
条件を求めています。
KならばKのところに特別な不一致は
L or Q
しか許されません。 Dの代わりにDが存在しない場合
は、特別な不一致がE
注意を許可する:2つだけ条件が適用することができます時。
予想される出力
((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
私が期待される出力
コードはどのように機能しませんか。あなたはどんな結果を期待していますか?彼らはあなたが得ているものとどのように共存していますか? –
親愛なる、私はこのコードを介して期待された出力を得ていない。私の論理や何かが間違っていると思う。私は特殊文字で2つの不一致を許可したいと思います。 'N =" TAG "、K =" LQ "、D =" E "' – user8866270