Ho un sacco di stringhe che voglio associare per similarità (ogni stringa ha in media 30 caratteri). Ho trovato difflib's
SequenceMatcher
ottimo per questo compito poiché era semplice e ho trovato i risultati positivi. Ma se confronto hellboy
e hell-boy
come questofacendo in modo che SequenceMatcher di difflib ignori i caratteri "junk"
>>> sm=SequenceMatcher(lambda x:x=='-','hellboy','hell-boy')
>>> sm.ratio()
0: 0.93333333333333335
voglio tali parole per dare una corrispondenza del 100 per cento vale a dire ratio of 1.0
. Comprendo che il carattere di rifiuto specificato nella funzione sopra non viene utilizzato per il confronto ma per trovare la sottosequenza di corrispondenza contigua più lunga. Esiste un modo per far sì che SequenceMatcher
ignori alcuni caratteri "indesiderati" a scopo di confronto?
E 'una specie di hacker , ma per qualsiasi motivo non è possibile rimuovere i caratteri _junk_ prima di fare il confronto? È essenzialmente la stessa cosa che ignorarli. –
sì, va bene ma volevo capire se potevo semplicemente fare un po 'di difflib' magia e farla franca altrimenti dovrei passare la stringa attraverso un'altra funzione per rimuovere prima tutti i caratteri junk. – lovesh