2016-03-01 78 views
1

我试图找到一种方法来计算/确定字符串列表中最接近的字符串匹配。从字符串列表计算最接近的字符串匹配

这里是我想找到最接近的匹配字符串: CTGGAG

从字符串列表:

matchlist = ['ACTGGA', 'CTGGAG', 'CTGGAA', 'CTGGTG', 'ACCGGT'] 

我使用SequenceMatcher从difflib尝试

for t in match: 
    assignseqmatch = SequenceMatcher(None, CTGGAG, t) 
    ratio = assignseqmatch.ratio() 
    seqratiomatchlist.append(ratio) 
    for r, s in zip(seqratiomatchlist, neutralhex): 
     neutralmatchscores[r].append(s) 

但是,当我使用这种方法时,列表中的前四个值都被报告具有相同的比率(0.833333)因为CTGGAG,CTGGAACTGGTG之间只有一个字母的差异,所以列表中的第四个值和第四个值应该具有最高的比率。我基本上只想计算两个字符串之间有多少字母变化。这可能吗?

+0

你可以使用Levenshtein距离(即编辑距离,有多少编辑你需要让你两个字符串匹配)。有几个python包已经实现了这个。而且实现起来相当简单。它可以让你比较两个不等长的字符串。 –

回答

1

找到两个相等长度的字符串,xy之间的字母更改的数量,请执行以下操作:两个字符串之间

numChanges = sum(i != j for i, j in zip(x, y)) 
+0

你接受我的回答只是让我的:) – zondo