0

文字列行を含むテキスト ファイルから最長の共通シーケンスを見つけようとしています。出力は、例のように行を揃えたテキスト ファイルでもある必要があります。

シーケンスを見つける - efghijk

出力ファイル:

abcdefghijklmno     
  dfefghijkrumlp    
 swrefghijkawsfce   
wsveefghijksxl  

difflib を使用し、行をリストに保存して list[0] と list[1] を比較し、この 2 つの文字列から最長のシーケンスを見つけてから difflib(None, sequence, list[2]) などを使用することを考えています。

しかし、これをコーディングするのに問題があり、出力ファイルを作成する方法がまったくわかりません。

アドバイスありがとう、ジャン

4

1 に答える 1

0

出力を印刷するのはとても簡単です。文字列内で最長の共通部分文字列が始まる位置を既に取得していると想像してください。あなたの例では、それは[4, 2, 3, 4]. すべての文字列をシフトするだけmax(begins) - begins[i]で、文字列が正しくインデントされます。

strings = ("abcdefghijklmno", "dfefghijkrumlp", "swrefghijkawsfce", "wsveefghijksxl")
positions = (4, 2, 3, 4)

maxpos = max(positions)

for i in range(len(strings)):
    print (" " * (maxpos - positions[i])) + strings[i]
于 2014-03-31T13:02:43.487 に答える