Skip to main content

Read tables from messy spreadsheets.

Project description

Logo

Travis (.com) Codecov Read the Docs PyPI PyPI - Python Version PyPI - Wheel GitHub last commit PyPI - Downloads

fuzzytable is a set of tools for extracting tabular data out of messy spreadsheets.

This library meets the needs of projects relying on spreadsheet data that has been handled by many people. Headers are often missing or misspelled. The data is incorrectly formatted. The table is on the wrong worksheet or you don't know the correct spreadsheet name. Etc...

fuzzytable allows you to quickly extract that data instead of arduously QC'ing the data ahead of time. After extraction, you can inspect the FuzzyTable attributes to e.g. determine which fields were found and how closely the desired header matches the actual header.

Installation

pip install fuzzytable

Example Usage

Here's a light-hearted demo. To read this messy file using, say, the csv module, we'd have to first:

  • Delete rows 1 and 2.
  • Delete columns A and B.
  • Rename the headers.
A B C D E
These are not the droids
you are looking for. He
can go c o l o r first name GivenName
about his Gold C 3PO
business . Blue R2 D2

Let's instead leverage the FuzzyTable class.

>>> from fuzzytable import FuzzyTable

>>> droids = FuzzyTable(
...     path='droids.csv',
...     fields=['first_name', 'last_name', 'color'],
...     approximate_match=True,
...     min_ratio=.3
... )

Now let's play with the data we've extracted.

>>> droids['color']
['Gold', 'Blue']

>>> for droid in droids.records:
...     print(f"{droid['first_name']}-{droid['last_name']} is {droid['color']}.")
C-3PO is Gold.
R2-D2 is Blue.

>>> droids.fields['first_name'].col_num
3

>>> droids.sheet.header_row
2

Links

Supported Formats

  • Excel (.xlsx, .xlsm, .xltx, .xltm)
  • csv (.csv)

Basically, anything that can be read by the openpyxl or csv modules.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fuzzytable-0.15a0.tar.gz (328.4 kB view details)

Uploaded Source

Built Distribution

fuzzytable-0.15a0-py3-none-any.whl (67.3 kB view details)

Uploaded Python 3

File details

Details for the file fuzzytable-0.15a0.tar.gz.

File metadata

  • Download URL: fuzzytable-0.15a0.tar.gz
  • Upload date:
  • Size: 328.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.22.0

File hashes

Hashes for fuzzytable-0.15a0.tar.gz
Algorithm Hash digest
SHA256 7305988c288eac31c9881cf389a299875ca1d1c57206b900d817c574038d888b
MD5 355c93a9634626239f471d81acc2d03c
BLAKE2b-256 d60093050e0fb79b0663fa872e63db4446dc4f42315bc92221f59c93e3b57e92

See more details on using hashes here.

File details

Details for the file fuzzytable-0.15a0-py3-none-any.whl.

File metadata

File hashes

Hashes for fuzzytable-0.15a0-py3-none-any.whl
Algorithm Hash digest
SHA256 53d62af0d8ec7f55190b64ecddb9fb4066e1c29d308f9f4e674f7a1c075c17ae
MD5 5d066d4e7c3d178de5f2a2033f348a3f
BLAKE2b-256 5f5dbbcee5dbdf2caa7a08ae214d97be2c37656cd07c00836d152f2bd797bfb2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page