从10行字符串中找到相等的序列

时间:2014-03-31 12:44:55

标签: python sequences difflib

我正在尝试从文本文件中找到最长的公共序列,其中包含字符串行。输出也应该是带有对齐线的文本文件,例如:

查找序列 - efghijk

输出文件:

abcdefghijklmno     
  dfefghijkrumlp    
 swrefghijkawsfce   
wsveefghijksxl  

我正在考虑使用difflib,将行保存到列表然后比较list [0]和list [1],从这两个字符串找到最长的序列然后difflib(None,sequence,list [2])等。

但是编码时我遇到了一些麻烦,我完全不知道如何输出文件。

感谢您的建议,Jan

1 个答案:

答案 0 :(得分: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]