Fuzzy string matching in python
Project description
TheFuzz
Fuzzy string matching like a boss. It uses Levenshtein Distance to calculate the differences between sequences in a simple-to-use package.
Requirements
- Python 2.7 or higher
- difflib
- python-Levenshtein (optional, provides a 4-10x speedup in String Matching, though may result in differing results for certain cases)
For testing
- pycodestyle
- hypothesis
- pytest
Installation
Using PIP via PyPI
pip install thefuzz
or the following to install python-Levenshtein too
pip install thefuzz[speedup]
Using PIP via Github
pip install git+git://github.com/seatgeek/thefuzz.git@0.19.0#egg=thefuzz
Adding to your requirements.txt file (run pip install -r requirements.txt afterwards)
git+ssh://git@github.com/seatgeek/thefuzz.git@0.19.0#egg=thefuzz
Manually via GIT
git clone git://github.com/seatgeek/thefuzz.git thefuzz
cd thefuzz
python setup.py install
Usage
>>> from thefuzz import fuzz >>> from thefuzz import process
Simple Ratio
>>> fuzz.ratio("this is a test", "this is a test!") 97
Partial Ratio
>>> fuzz.partial_ratio("this is a test", "this is a test!") 100
Token Sort Ratio
>>> fuzz.ratio("fuzzy wuzzy was a bear", "wuzzy fuzzy was a bear") 91 >>> fuzz.token_sort_ratio("fuzzy wuzzy was a bear", "wuzzy fuzzy was a bear") 100
Token Set Ratio
>>> fuzz.token_sort_ratio("fuzzy was a bear", "fuzzy fuzzy was a bear") 84 >>> fuzz.token_set_ratio("fuzzy was a bear", "fuzzy fuzzy was a bear") 100
Process
>>> choices = ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"] >>> process.extract("new york jets", choices, limit=2) [('New York Jets', 100), ('New York Giants', 78)] >>> process.extractOne("cowboys", choices) ("Dallas Cowboys", 90)
You can also pass additional parameters to extractOne method to make it use a specific scorer. A typical use case is to match file paths:
>>> process.extractOne("System of a down - Hypnotize - Heroin", songs) ('/music/library/good/System of a Down/2005 - Hypnotize/01 - Attack.mp3', 86) >>> process.extractOne("System of a down - Hypnotize - Heroin", songs, scorer=fuzz.token_sort_ratio) ("/music/library/good/System of a Down/2005 - Hypnotize/10 - She's Like Heroin.mp3", 61)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
thefuzz-0.19.0.tar.gz
(28.6 kB
view hashes)
Built Distribution
Close
Hashes for thefuzz-0.19.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4fcdde8e40f5ca5e8106bc7665181f9598a9c8b18b0a4d38c41a095ba6788972 |
|
MD5 | d28fc51e7848f9cebff5f9f2db8ed3b9 |
|
BLAKE2-256 | 247c2acf47d228b0c0879468b4e2fd15a14eb58bd97897b4bb8a9a7ed47d22f7 |