2014-03-31 38 views
0

我試圖從文本文件中找到最長的常見序列,其中包含字符串行。輸出應該也與對齊線,如文本文件,例如:從10行字符串查找等同序列

發現序列 - efghijk

輸出文件:

abcdefghijklmno  
    dfefghijkrumlp  
swrefghijkawsfce 
wsveefghijksxl 

我正在考慮使用difflib,節省線路列表,然後比較列表[0]和列表[1],從這兩個字符串中找出最長的序列,然後difflib(無,序列,列表[2])等。

但是我編碼時遇到了一些麻煩,我完全不知道做輸出文件。

感謝您的建議,Jan

回答

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]