Missing codecs in Python 3.0

Chris Rebert clp2 at rebertia.com
Tue Jun 2 22:35:23 EDT 2009


On Tue, Jun 2, 2009 at 7:15 PM, samwyse <samwyse at gmail.com> wrote:
> I have a Python 2.6 program (a code generator, actually) that tries
> several methods of compressing a string and chooses the most compact.
> It then writes out something like this:
>  { encoding='bz2_codec', data = '...'}
>
> I'm having two problems converting this to Py3.  First is the absence
> of the bz2_codec, among others.  It was very convenient for my program
> to delay selection of the decoding method until run-time and then have
> an easy way to load the appropriate code.  Is this gone forever from
> the standard libraries?

That appears to be the case. "bz2" is not listed on
http://docs.python.org/3.0/library/codecs.html , but it is listed on
the counterpart 2.6 doc page.
You can always use the `bz2` module instead. Or write your own
encoder/decoder for bz2 and register it with the `codecs` module.

> Second, I would write my data out using the 'string_escape' codec.
> It, too, has been removed; there's a 'unicode_escape' codec which is
> similar, but I would rather use a 'byte_escape' codec to produce
> literals of the form b'asdf'.  Unfortunately, there isn't one that I
> can find.  I could use the repr function, but that seems less
> efficient.  Does anyone have any ideas?  Thanks.

Well, if you can guarantee the string contains only ASCII, you can
just unicode_escape it, and then prepend a "b".
On the other hand, I don't see any reason why repr() would be
inefficient as compared to the codec method.

Cheers,
Chris
-- 
http://blog.rebertia.com



More information about the Python-list mailing list