2015-07-10 20 views
0

))大家好,我想找到使用difflib兩個字符串變量之間最接近的匹配查找兩個字符串變量之間最接近的匹配,這是我的情況...使用difflib

varA = 'plainmountain' 
varB = 'skymountain' 

newVarA = 'piaimauntain' 

我想difflib找到VarA和VarB變量中最接近的匹配(它們只是變量,而不是列表),如果我在搜索中添加第三個變量varC怎麼辦?我怎麼能difflib找到一個最接近的匹配。

目前我試着這...

varA = 'plaimountain' 
varB = 'skymountain' 
varAll = [varA, varB, varC] 
newVarA = 'piaimauntain' 

我doint這樣說......

import difflib 
d = difflib.Differ() 
diff = d.compare(varA, newVarA) 
print '\n'.join(diff) 

現在我正在做這種方式...

from difflib import SequenceMatcher 
result = difflib.get_close_matches(newVarA, varAll, 1, 0.7) 
print result 

感謝高級。

+0

請閱讀:http://stackoverflow.com/help/how-to-ask – TehTris

+1

生病保持只要編輯問題作爲一個不斷嘗試更多的東西。任何提示?感謝高級。 – Natysiu16

回答

0

如果我理解你的任務將有助於:

import difflib 

varA = 'plaimountain' 
varB = 'piaimauntain' 
varC = 'skymountain' 
varS = ['piaimauntain','sky','skymountain','dog','231'] 

#it parse varB by letters 
best = difflib.get_close_matches(varA, varB) 
print best 

best = difflib.get_close_matches(varA, [varB]) 
print best 

best = difflib.get_close_matches(varA, [varB,varC]) 
print best 

best = difflib.get_close_matches(varA, [varB,varS]) 
print best 
+0

hi @zveryansky謝謝,是的,我從difflib docs中讀到了(即使我不能在沒有創建列表的情況下執行此任務,是否可以在沒有它的情況下執行此操作?)請在您的答案中,我不明白爲什麼要附上varB在括號內[varB]或者[varB,varC]或者[varB,carS]中,爲什麼?你正在創建一個新的列表? – Natysiu16

+0

get_close_matches()獲取至少2個參數:單詞和'可能性'是序列列表。如果你使用varB函數,將比較'plaimountain'與['p','i','a','i','m','a','u','n','t','一個」, 'I', 'N']。如果你使用[varB],它會比較'plaimountain'和['piaimauntain']。當我使用[varB]時,我正在創建一個列表,如果你不能使用list然後嘗試(varB),它將會是元組。 – zveryansky

+0

Thanks man ............. – Natysiu16