从字符串列表中计算最接近的字符串匹配
Calculating closest string match from a list of strings
我正在尝试找到一种方法来从字符串列表中calculate/determine 最接近的字符串匹配项。
这是我要查找最接近匹配项的字符串:
CTGGAG
来自字符串列表:
matchlist = ['ACTGGA', 'CTGGAG', 'CTGGAA', 'CTGGTG', 'ACCGGT']
我试过使用来自 difflib 的 SequenceMatcher:
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
、CTGGAA
和 CTGGTG
之间相差一个字母。我基本上只想计算两个字符串之间有多少字母变化。这可能吗?
要查找两个等长字符串 x
和 y
之间的字母变化数,请执行以下操作:
numChanges = sum(i != j for i, j in zip(x, y))
我正在尝试找到一种方法来从字符串列表中calculate/determine 最接近的字符串匹配项。
这是我要查找最接近匹配项的字符串:
CTGGAG
来自字符串列表:
matchlist = ['ACTGGA', 'CTGGAG', 'CTGGAA', 'CTGGTG', 'ACCGGT']
我试过使用来自 difflib 的 SequenceMatcher:
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
、CTGGAA
和 CTGGTG
之间相差一个字母。我基本上只想计算两个字符串之间有多少字母变化。这可能吗?
要查找两个等长字符串 x
和 y
之间的字母变化数,请执行以下操作:
numChanges = sum(i != j for i, j in zip(x, y))