Fuzzy string matching in python
Project description
fuzzywuzzymit
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.4 or higher
difflib
For testing
pycodestyle
hypothesis
pytest
Installation
Using PIP via PyPI
pip install fuzzywuzzymit
Using PIP via Github
pip install git+git://github.com/graingert/fuzzywuzzymit.git@0.16.0#egg=fuzzywuzzymit
Adding to your requirements.txt file (run pip install -r requirements.txt afterwards)
git+ssh://git@github.com/graingert/fuzzywuzzymit.git@0.16.0#egg=fuzzywuzzymit
Manually via GIT
git clone git://github.com/graingert/fuzzywuzzymit.git fuzzywuzzymit
cd fuzzywuzzymit
python setup.py install
Usage
>>> from fuzzywuzzymit import fuzz
>>> from fuzzywuzzymit 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)
Known Ports
fuzzywuzzymit is being ported to other languages too! Here are a few ports we know about:
Rust: fuzzyrusty (Rust port)
JavaScript: fuzzball.js (JavaScript port)
C++: Tmplt/fuzzywuzzymit
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
Built Distribution
Hashes for fuzzywuzzymit-0.0.0.post1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ccd4b1cda90a38dc62a1eef74dc42c61ee19c32a928905515614d9be29b7d15 |
|
MD5 | ec8dd52fba0b396ceb756a354cbd9851 |
|
BLAKE2b-256 | 1b3f2a42e70d5db613e7cf3a004d3d1a362130ba27996fbd0550f54e83ec3ce3 |
Hashes for fuzzywuzzymit-0.0.0.post1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4118541a42e369c37563cdf0f13dce03f791b07001f26ec96a14778b622051a |
|
MD5 | 6921e9b5a5736557dedaa10c4188743e |
|
BLAKE2b-256 | 675e33025595977eb57f8cd1ecd388916202ec217332c56392f4384ac36cdd39 |