Tôi có rất nhiều chuỗi mà tôi muốn kết hợp cho sự giống nhau (mỗi chuỗi trung bình là 30 ký tự). Tôi đã tìm thấy difflib's
SequenceMatcher
tuyệt vời cho công việc này vì nó đơn giản và thấy kết quả tốt. Nhưng nếu tôi so sánh hellboy
và hell-boy
như thế nàylàm cho SequenceMatcher của difflib bỏ qua các ký tự "rác"
>>> sm=SequenceMatcher(lambda x:x=='-','hellboy','hell-boy')
>>> sm.ratio()
0: 0.93333333333333335
Tôi muốn từ như vậy để cung cấp cho một trận đấu 100 phần trăm tức là ratio of 1.0
. Tôi hiểu rằng ký tự rác được chỉ định trong hàm ở trên không được sử dụng để so sánh nhưng tìm các chuỗi kết hợp liền kề dài nhất. Có cách nào tôi có thể thực hiện SequenceMatcher
để bỏ qua một số ký tự "rác" cho mục đích so sánh không?
Đó là loại hackish , nhưng bất kỳ lý do gì bạn không thể chỉ xóa các ký tự _junk_ trước khi thực hiện so sánh? Đó là bản chất giống như bỏ qua chúng. –
có thats tốt nhưng tôi muốn tìm ra nếu tôi chỉ có thể làm một số ma thuật 'difflib' và nhận được đi với nó nếu không tôi sẽ phải vượt qua chuỗi thông qua chức năng khác để loại bỏ tất cả các ký tự rác. – lovesh