Skip to main content

Python 2/3 unicode CSV compatibility layer

Project description

Latest PyPI Version License Supported Python Versions Format Readthedocs

Travis Codecov

csv23 provides the unicode-based API of the Python 3 csv module for Python 2 and 3. Code that should run under both versions of Python can use it to hide the bytes vs. text difference between 2 and 3 and stick to the newer unicode-based interface.

csv23 works around for the following bugs in the stdlib csv module:

broken round-trip with escapechar if your data contains a literal escape character
broken round-trip with escapechar and embedded newlines under Python 2 (fixed in Python 3.4 but not backported): produce a warning

The package also provides some convenience functionality such as the open_csv() context manager for opening a CSV file in the right mode and returning a csv.reader or csv.writer:

>>> import csv23

>>> with csv23.open_csv('spam.csv') as reader:  # doctest: +SKIP
...     for row in reader:
...         print(', '.join(row))
Spam!, Spam!, Spam!'
Spam!, Lovely Spam!, Lovely Spam!'

It uses utf-8 as default encoding everywhere.


This package runs under Python 2.7, and 3.4+, use pip to install:

$ pip install csv23


This package is distributed under the MIT license.

Project details

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
csv23-0.1.4-py2.py3-none-any.whl (14.2 kB) Copy SHA256 hash SHA256 Wheel py2.py3 (33.3 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page