Benzerlik için eşleştirmek istediğim çok sayıda dizim var (her bir dize ortalama 30 karakterdir). Bu işlem için difflib's
SequenceMatcher
numaralı telefonu buldum ve bu işlemin sonuçları gayet iyi. ben budifflib'in sırasını yapma SequenceMatcher "önemsiz" karakterleri yok sayılır
>>> sm=SequenceMatcher(lambda x:x=='-','hellboy','hell-boy')
>>> sm.ratio()
0: 0.93333333333333335
gibi hellboy
ve hell-boy
karşılaştırırsanız Ama bu tür kelimeler ratio of 1.0
yani yüzde 100 maç vermek istiyorum. Yukarıdaki işlevde belirtilen önemsiz karakterin karşılaştırma için kullanılmadığını, ancak en uzun bitişik eşleşen alt dizeyi bulmadığını anlıyorum. Karşılaştırma amacıyla bazı "önemsiz" karakterleri yok saymak için SequenceMatcher
yapabilirim bir yolu var mı?
Biraz hackish var , ancak karşılaştırma yapmadan önce _junk_ karakterlerini kaldıramayacağınız herhangi bir sebep var mı? Aslında onları görmezden gelmekle aynı şeydir. –
evet bu iyi ama ben sadece bir 'difflib' sihrini yapıp onunla uzaklaşıp kapatamayacağımı anlamaya çalıştım, aksi takdirde ilk önce tüm önemsiz karakterleri kaldırmak için dizgiyi başka bir işlevden geçirmeliyim. – lovesh