Skip to content

addisoncox/ffzf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ffzf

Fast fuzzy string matching for Python.
Written in Rust using PyO3.

Installation

pip install ffzf

Usage

# Find closest string matching
from ffzf import closest
best_match = closest("hello", ["harps", "apples", "jello"])

# Find n best matches
from ffzf import n_closest
best_matches = n_closest("hello", ["harps", "apples", "jello"], 2)

from ffzf import JAROWINKLER
# Specify an algorithm (default is levenshtein distance)
best_match = closest("hello", ["harps", "apples", "jello"], algorithm=JAROWINKLER)

# Call algorithm directly
from ffzf import levenshtein_distance
dist = levenshtein_distance("hello", "jello")

# Case sensitive comparison (default is case insensitive)
dist = levenshtein_distance("Hello", "hello", case_sensitive=True)
best_match = closest("Hello", ["harps", "apples", "jello"], case_sensitive=True)

# Remove whitespace (default is to keep the whitespace in strings)
dist = levenshtein_distance("hello world", "helloworld", remove_whitespace=True)

# Return scores with closest results
from ffzf import n_closest_with_score
best_matches = n_closest_with_score("hello", ["harps", "apples", "jello"], 2)

Supported Algorithms

  • Levenshtein Distance (default)
  • Jaro Similarity ("JARO")
  • Jaro-Winkler Similarity ("JAROWINKLER")
  • Hamming Distance ("HAMMING")