2017-11-11 5 views
-2

4つの文字列を取り込む関数を作成しました。最初の2つの文字列は長い文字列になります。最後の2つの文字列は境界と呼ばれます。私は定義された境界の間でstring1のすべてをとって、定義された境界の間のstring2のすべてを置き換えたいと思います。文字列1から取り除かれた文字列の一部は削除され、文字列2で置換された部分は削除されます。この機能の例は以下の通りです:2つの定義された境界のシーケンス間のスプライシング

def bound('DOGYOMAMA','ROOGMEMAD', 'OG' 'MA') --> RETURNS('DMA','ROOGYOMAD', 
'OG', 'MA') 

これは私が私の問題は、私もそれはので、これはで動作するようにする必要がありということです

def bound(st,sz,a,b): 
    s1=''.join(st) 
    s2=''.join(sz) 
    if a in s1 and b in s1 and a in s2 and b in s2: 
     f1=s1.find(a) 
     l1=s1.find(b) 
     f2=s2.find(a) 
     l2=s2.find(b) 

     blen1 = len(b) 
     blen2 = len(b) 

     s1_n = s1[:f1] +s1[l1+blen1:] 
     s2_n = s2[:f2] + s1[f1:l1 + blen1] +s2[l2+blen2] 
     return s1_n, s2_n, a, b 

print(bound('DOGYOMAMA','ROOGMEMAD', 'OG','MA')) 

上に書いた何をするために作成した機能です逆のように私は('DOGYOMAMA','ROOGMEMAD', 'OG' 'MA')を持っているならば、('AMAMOYGOD','DAMEMGOOR', 'GO' 'AM')も探してください。文字列を両方の方法でスプライスできる場合は、最も低いインデックスでスプライスされたシーケンスのみが使用されます。

+0

ようこそ!あなたの問題を解決したら、その答えを受け入れることでユーザーに知らせることができます。あなたが解決策の問題について解説を見つけなかった場合。 –

答えて

0

このお試しください:

を、あなたは多くのアイテムを返す必要があれば、私はそこにいたことを、店の代わりに、リスト内の出力を出力を返し、最後にそのリストを返しません。

def bound(st,sz,a,b): 
    result=[] 
    string_s = [''.join(st), ''.join(sz), ''.join(st)[::-1], ''.join(sz)[::-1]] 
    boundaries = [a, b, a[::-1], b[::-1]] 
    for chunk in range(0, len(string_s), 2): 
     word = string_s[chunk:chunk + 2] 
     bound = boundaries[chunk:chunk + 2] 
     if bound[0] in word[0] and bound[1] in word[0] and bound[0] in word[1] and bound[1] in word[1]: 
      f1 = word[0].find(bound[0]) 
      l1 = word[0].find(bound[1]) 
      f2 = word[1].find(bound[0]) 
      l2 = word[1].find(bound[1]) 

      blen1 = len(bound[1]) 
      blen2 = len(bound[1]) 

      s1_n = word[0][:f1] + word[0][l1 + blen1:] 


      s2_n = word[1][:f2] + word[0][f1:l1 + blen1] + word[1][l2 + blen2] 
      result.append([s1_n, s2_n, bound[0], bound[1]]) 

    return result 


print(bound('DOGYOMAMA','ROOGMEMAD', 'OG','MA')) 

出力:スタックオーバーフローへ

[['DMA', 'ROOGYOMAD', 'OG', 'MA'], ['AMAMOYAMOYGOD', 'DAMEME', 'GO', 'AM']] 
関連する問題