Easy word filtering and searching from a custom set of words
Project description
# Wordplay
[](https://travis-ci.org/enioluwa23/wordplay) [](https://pypi.org/project/wordplay/) [](https://pypi.org/project/wordplay/) [](https://pypi.org/project/wordplay/)
Python package for word searching utilities.
Using a convenient API, you can filter a set of strings with detailed criteria. There are also more scrabble-like features such as getting all anagrams of a word.
## Install
```bash
pip install wordplay
```
## Background
I initially built this as an algorithm solely to help my endeavors in word games such as Scrabble. It was useful for finding word combinations in every type of situation. However, I realized it could be used for many other purposes, such as filtering email addresses, phone numbers and any set of data really. So I decided to decouple the API from my personal use.
## Usage
Words are stored in a `Dictionary` object. Initialize the dictionary with a [`set`](https://docs.python.org/2/library/stdtypes.html#set) of strings (there are no restrictions on what the string can contain) or `Dictionary()` with no arguments to use the word set sourced from [here](https://github.com/dwyl/english-words). In the future, I will amass a couple of word lists and make them options for initializing the dictionary.
If you do want restrictions on the string, see the documentation for the [`Utils`](https://enioluwa23.github.io/wordplay/api/utils/) module. For complex query parameters, you can use a `Criteria` object. The class uses the builder pattern, making it easy to construct search parameters.
Here is a an example file:
```python
from __future__ import print_function
from wordplay.dictionary import Dictionary
from wordplay.criteria import Criteria
def main():
dictionary = Dictionary()
result = dictionary.get_words_with_any_letters('diction', 6)
print(result)
# ['diotic', 'dition', 'indico', 'indict', 'nidiot', 'odinic']
result = dictionary.get_words_with_any_letters('pox')
print(result)
# ['o', 'op', 'ox', 'p', 'po', 'pox', 'x']
result = dictionary.get_anagrams('aekst')
print(result)
# ['keats', 'skate', 'skeat', 'stake', 'steak', 'takes', 'teaks']
print('car' in dictionary) # Dictionary is directly iterable
# True
criteria = Criteria()
criteria.begins_with('c').ends_with('s').contains('or')
criteria.contains_at(('o', 2), ('r', 4)).size_is(10)
result = dictionary.get_words(criteria)
print(result)
# ['corrosives', 'correlates', 'corrugates']
if __name__ == '__main__':
main()
```
For further example usage see the [Documentation](https://enioluwa23.github.io/wordplay/).
To run tests, use `pytest`.
## Documentation
[API Reference](https://enioluwa23.github.io/wordplay/)
## License
[Apache Software License](https://github.com/enioluwa23/wordplay/blob/master/LICENSE)
[](https://travis-ci.org/enioluwa23/wordplay) [](https://pypi.org/project/wordplay/) [](https://pypi.org/project/wordplay/) [](https://pypi.org/project/wordplay/)
Python package for word searching utilities.
Using a convenient API, you can filter a set of strings with detailed criteria. There are also more scrabble-like features such as getting all anagrams of a word.
## Install
```bash
pip install wordplay
```
## Background
I initially built this as an algorithm solely to help my endeavors in word games such as Scrabble. It was useful for finding word combinations in every type of situation. However, I realized it could be used for many other purposes, such as filtering email addresses, phone numbers and any set of data really. So I decided to decouple the API from my personal use.
## Usage
Words are stored in a `Dictionary` object. Initialize the dictionary with a [`set`](https://docs.python.org/2/library/stdtypes.html#set) of strings (there are no restrictions on what the string can contain) or `Dictionary()` with no arguments to use the word set sourced from [here](https://github.com/dwyl/english-words). In the future, I will amass a couple of word lists and make them options for initializing the dictionary.
If you do want restrictions on the string, see the documentation for the [`Utils`](https://enioluwa23.github.io/wordplay/api/utils/) module. For complex query parameters, you can use a `Criteria` object. The class uses the builder pattern, making it easy to construct search parameters.
Here is a an example file:
```python
from __future__ import print_function
from wordplay.dictionary import Dictionary
from wordplay.criteria import Criteria
def main():
dictionary = Dictionary()
result = dictionary.get_words_with_any_letters('diction', 6)
print(result)
# ['diotic', 'dition', 'indico', 'indict', 'nidiot', 'odinic']
result = dictionary.get_words_with_any_letters('pox')
print(result)
# ['o', 'op', 'ox', 'p', 'po', 'pox', 'x']
result = dictionary.get_anagrams('aekst')
print(result)
# ['keats', 'skate', 'skeat', 'stake', 'steak', 'takes', 'teaks']
print('car' in dictionary) # Dictionary is directly iterable
# True
criteria = Criteria()
criteria.begins_with('c').ends_with('s').contains('or')
criteria.contains_at(('o', 2), ('r', 4)).size_is(10)
result = dictionary.get_words(criteria)
print(result)
# ['corrosives', 'correlates', 'corrugates']
if __name__ == '__main__':
main()
```
For further example usage see the [Documentation](https://enioluwa23.github.io/wordplay/).
To run tests, use `pytest`.
## Documentation
[API Reference](https://enioluwa23.github.io/wordplay/)
## License
[Apache Software License](https://github.com/enioluwa23/wordplay/blob/master/LICENSE)
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
wordplay-1.0.0a4.tar.gz
(2.5 MB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wordplay-1.0.0a4.tar.gz.
File metadata
- Download URL: wordplay-1.0.0a4.tar.gz
- Upload date:
- Size: 2.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30895143461510e571c16bae44625000baf1715b1db3d04a16347909322032b6
|
|
| MD5 |
3a49be1294c905d4c0378809425b215b
|
|
| BLAKE2b-256 |
30a00a692aa8236fd8b3fb71fa77eda7e6d33148996622c5833c3437f5376f07
|
File details
Details for the file wordplay-1.0.0a4-py2.py3-none-any.whl.
File metadata
- Download URL: wordplay-1.0.0a4-py2.py3-none-any.whl
- Upload date:
- Size: 2.5 MB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffdf96d4c30f46e278238b1fa3b08cd92a1631f306985f13f4e1e31d0a7e1998
|
|
| MD5 |
0b6d5782551f22ab7c575fe2eca2e036
|
|
| BLAKE2b-256 |
43f7404a6cdf6bc13071fbf1f5af0063b23f5690ceedba9ab27c38ba795ea8e1
|