On Sat, 12 Jun 2010 05:27:39 am Zubin Mithra wrote: > Hey everyone, > > I just discovered that the following construct does not work in Py3k. > > >>> string.maketrans('-', '_')
Like the error message says, you have to use bytes, which I grant is counter-intuitive, but it does work: >>> table = string.maketrans(b'-', b'_') >>> 'abc-def'.translate(table) 'abc_def' (Perhaps it shouldn't though... it seems to be an undocumented feature.) > However, the following works, > > >>> str.maketrans('-', '_') > > When i try to convert a python module containing the above construct, > it does not get modified in a way such that it could run on Python > 3.0 I think this should be reported as a bug/feature request on the bug tracker. Having 2to3 be as extensive as possible is a high priority to the Python development team. http://bugs.python.org/ > 1. replace string.maketrans() with a function which is compatible in > both Python 2.x and 3.0 ; as of now I`m unaware of such a construct. That at least is easy. def maketrans(a, b): try: return string.translate(a, b) except TypeError: return str.translate(a, b) > 2. write a fixer for doing this which I could use. I could`nt find > any good tutorials out there on writing fixers, i`d be grateful if > you could point me to any. For that you probably need to ask on the main Python mailing list or newsgroup: comp.lang.python http://mail.python.org/mailman/listinfo/python-list -- Steven D'Aprano _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor