2014-03-31 10 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]