2016-03-01 91 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