python
  • python-2.7
  • 2017-11-22 6 views 1 likes 
    1

    私は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することができ許可した場合の代わりに

    1. :私は条件以下の(のみ、この文字)あたりとしてのみ特殊な文字の不一致

      条件を求めています。

    2. KならばKのところに特別な不一致はL or Qしか許されません。 Dの代わりに

    3. 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 
    

    私が期待される出力

    +1

    コードはどのように機能しませんか。あなたはどんな結果を期待していますか?彼らはあなたが得ているものとどのように共存していますか? –

    +0

    親愛なる、私はこのコードを介して期待された出力を得ていない。私の論理や何かが間違っていると思う。私は特殊文字で2つの不一致を許可したいと思います。 'N =" TAG "、K =" LQ "、D =" E "' – user8866270

    答えて

    0

    の上にそのような出力を必要とするコードを編集:私はあなたの条件、次の試してみました。 'NKSD'、 'TLSD'、または 'NQIE'のようにタンパク質を設定すると、出力はTrueになります。 'HKSD'や 'TQIE'のようにタンパク質を設定すると、出力はFalseになります。

    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 
    
    +0

    親愛なる、出力として 'false'を得る。私はそこに完全なスクリプトを編集しました。私はこの機能を使用しています。 – user8866270

    +0

    編集しました。私のフルスクリプトは一度チェックしてください。 – user8866270

    +0

    g4_match(X、Y)で不一致を再度確認する必要はありません。あなたはすでにマッチ(X、Y)の不一致をチェックしました。 –

    関連する問題