Posts tagged ‘Levenshtein’

Die „passendste“ Datei mit Python ermitteln (fuzzywuzzy)

Für eine Anwendung habe ich eine Möglichkeit gesucht, die „passendste“ Datei in einem Verzeichnis zu suchen. Dies kann relevant sein, wenn die Anwendung eine bestimmte Datei in einem Verzeichnis erwartet, die aber leicht anders benannt wurde als es die Vorgabe erfordert.

Das folgende Beispielprogramm nutzt die Levenshtein-Funktionen der fuzzywuzzy Bibliothek, um die Datei zu finden, die das größte Maß an Gleichheit zum Muster besitzt.

Man kann natürlich auch RegExps benutzen, mit der fuzzywuzzy Bibliothek ist es aber auch recht intuitiv.

# -*- coding: utf-8 -*-
import os
from fuzzywuzzy import fuzz
 
def guess_file(template, path):
    max_ratio = 0
    file_max_ratio = ''
 
    for file in os.listdir(path):
        file_wo_suffix = os.path.splitext(file)[0]
 
        ratio = fuzz.ratio(file_wo_suffix, template)
        if ratio > max_ratio:
            max_ratio = ratio
            file_max_ratio = file
 
    return(file_max_ratio, max_ratio)
 
 
print(guess_file('Meine Inputdaten','R:/'))

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Levenshtein mit R und der RecordLinkage Bibliothek

Mit RecordLinkagegibt es eine R Bibliothek, die den Levenshtein Algorithmus per DLL/SO bereitstellt. Hier ein Beispiel:

library("RecordLinkage")

# the absolute value of the Levenshtein distance
levenshteinDist("Uwe", "uwe")
# a similarity measure
# based on 1 - d(str1,str2) / max(A,B)
# with d as L. distance
# and A, B as lengths of strings
levenshteinSim("Uwe", "uwe")

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website