मेरे पास बहुत सारे स्ट्रिंग हैं जिन्हें मैं समानता के लिए मिलान करना चाहता हूं (प्रत्येक स्ट्रिंग औसत पर 30 वर्ण है)। मुझे difflib's
SequenceMatcher
इस कार्य के लिए बहुत अच्छा लगता है क्योंकि यह आसान था और परिणाम अच्छे पाए गए। लेकिन अगर मैं hellboy
और hell-boy
तुलना इसdifflib के अनुक्रम MATcher को "जंक" वर्णों को अनदेखा करें
>>> sm=SequenceMatcher(lambda x:x=='-','hellboy','hell-boy')
>>> sm.ratio()
0: 0.93333333333333335
जैसे मैं ऐसे शब्दों ratio of 1.0
यानी 100 प्रतिशत मैच देना चाहते हैं। मैं समझता हूं कि ऊपर दिए गए फ़ंक्शन में निर्दिष्ट जंक कैरेक्टर का उपयोग तुलना के लिए नहीं किया जाता है, लेकिन बाद में सबसे व्यस्त मिलान मिलान मिलता है। क्या कोई तरीका है कि मैं तुलनात्मक उद्देश्य के लिए कुछ "जंक" वर्णों को अनदेखा करने के लिए SequenceMatcher
बना सकता हूं?
यह एक तरह से hackish है , लेकिन किसी भी कारण से आप तुलना करने से पहले _junk_ अक्षर को हटा नहीं सकते? यह अनिवार्य रूप से वही बात है जो उन्हें अनदेखा कर रहा है। –
हाँ यह अच्छा है लेकिन मैं यह जानना चाहता था कि क्या मैं कुछ 'difflib' जादू कर सकता हूं और इससे दूर हो सकता हूं अन्यथा मुझे सभी जंक वर्णों को हटाने के लिए स्ट्रिंग को किसी अन्य फ़ंक्शन के माध्यम से पास करना होगा। – lovesh