Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 csvfilter
Octocat-spinner-32 fixtures
Octocat-spinner-32 tests
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .travis.yml
Octocat-spinner-32 LICENSE
Octocat-spinner-32 MANIFEST.in
Octocat-spinner-32 README.rst
Octocat-spinner-32 makefile
Octocat-spinner-32 requirements.txt
Octocat-spinner-32 setup.py
README.rst

csvfilter - Simple CSV filtering

A simple wrapper around Python's CSV module to provide a command-line tool for filtering columns from a CSV file. This is useful as standard tools like awk can't easily handle the quoting and escaping used in CSV files.

Basically, it's a bit like cut but for CSVs.

Install

From PyPi:

pip install csvfilter

Use

Pluck fields 1, 3 and 5 from in.csv:

csvfilter -f 1,3,5 in.csv > out.csv

Pluck all fields apart from column 2 from STDIN:

cat in.csv | csvfilter -f 2 -i > out.csv

Convert pipe-separated file to comma-separated (by default, output is comma-separated):

csvfilter -d"|" in.psv > out.csv

Skip that pesky header row:

cat in.csv | csvfilter --skip=1

As you can see, CSV data can be supplied through STDIN or by running csvfilter directly on a file.

Help is in the usual place:

$ csvfilter --help

Usage: csvfilter [options] [inputfile]

Source: https://github.com/codeinthehole/csvfilter/

Options:
-h, --help            show this help message and exit
-f FIELDS, --fields=FIELDS
                        Specify which fields to pluck
-s SKIP, --skip=SKIP  Number of rows to skip
-d DELIMITER, --delimiter=DELIMITER
                        Delimiter of incoming CSV data
-q QUOTECHAR, --quotechar=QUOTECHAR
                        Quotechar of incoming CSV data

-i, --inverse         Invert the filter - ie drop the selected fields
--out-delimiter=OUT_DELIMITER
                        Delimiter to use for output
--out-quotechar=OUT_QUOTECHAR
                        Quote character to use for output

Report issues

Use the Github issue tracker or, better still...

Contribute

After cloning, install the testing requirements:

pip install -r requirements.txt

Install the package in 'develop' mode to bring the executable onto your path:

./setup.py develop

Run the tests with:

nosetests

and, if it helps, use the fixture files to test your amendments:

cat fixtures/au.csv | csvfilter -f 3,1,2 -s 1
csvfilter fixutres/au.csv -f 1,2 -i

Have fun.

Something went wrong with that request. Please try again.