Mam wiele ciągów, które chcę dopasować podobieństwa (każdy ciąg ma średnio 30 znaków). Znalazłem świetny do tego zadania, ponieważ było to proste i stwierdził, że wyniki są dobre. Ale jeśli porównać hellboy
i hell-boy
jak tenDokonywanie sequelMatcher difflib ignorować "śmieci" znaków
>>> sm=SequenceMatcher(lambda x:x=='-','hellboy','hell-boy')
>>> sm.ratio()
0: 0.93333333333333335
chcę takie słowa dać 100 procent mecz tj ratio of 1.0
. Rozumiem, że znak śmieciowy określony w powyższej funkcji nie jest używany do porównywania, ale znajduje najdłuższy ciągły pasujący podciąg. Czy jest jakiś sposób, aby ustawić SequenceMatcher
, aby zignorować niektóre "śmieciowe" znaki w celu porównania?
To rodzaj hackish , ale jakikolwiek powód nie mógł po prostu usunąć znaków _junk_ przed wykonaniem porównania? To w zasadzie to samo, co ich ignorowanie. –
Tak, to dobrze, ale chciałem dowiedzieć się, czy mogę po prostu zrobić magię 'difflib' i uciec z nim w przeciwnym razie musiałbym przekazać ciąg przez inną funkcję, aby najpierw usunąć wszystkie znaki śmieciowe. – lovesh