From: pruebauno on 10 Dec 2008 10:13 On Dec 10, 10:06 am, prueba...(a)latinmail.com wrote: > On Dec 10, 6:58 am, Bill McClain > > > > <20080915.20.wmccl...(a)spamgourmet.com> wrote: > > On 2008-12-10, ajaksu <aja...(a)gmail.com> wrote: > > > > On Dec 9, 5:24 pm, Bill McClain <20080915.20.wmccl...(a)spamgourmet.com> > > > wrote: > > > > On 2008-12-09, MRAB <goo...(a)mrabarnett.plus.com> wrote: > > > > > > In Python 2.x unmarked string literals are bytestrings. In Python 3.x > > > > > they're Unicode. The intention is to make the transition from 2.x to 3.x > > > > > easier by adding some features of 3.x to 2.x, but without breaking > > > > > backwards compatibility (not entirely successfully!). > > > > > It is a bit ugly. In 2.6 StringIO won't take bytestrings, so I apply u'x'. But > > > > in 3.0 u'x' will be gone and I'll have to change the code again. > > > Try: > > > from __future__ import unicode_literals > > > That works for: > > > output.write('First line.\n') > > > ...but not for: > > > print('Second line.', file=output) > > > Maybe a combination of this and functools.partial as was suggested before. At > > least the necessary edits would be at the top of the program. > > > -Bill > > -- > > Sattre Press Tales of Warhttp://sattre-press.com/ by Lord Dunsany > > i...(a)sattre-press.com http://sattre-press.com/tow.html > > I think this combination might do the trick (I don't have 2.6 to test > it right now): > > from __future__ import print_function > from __future__ import unicode_literals > from functools import partial > import io > print = partial(print, sep=" ", end="\n") > out = io.StringIO() > print("hello", file=out) > > What puzzles me is the documentation in 2.6 and 3.0: > In 2.6 it says: "The StringIO object can accept either Unicode or 8- > bit strings". Why does it fail with old str objects then? > Why is there no documentation for StringIO in 3.0? OK I found StringIO it is called io.StringIO now.
From: Bill McClain on 10 Dec 2008 13:55 On 2008-12-10, pruebauno(a)latinmail.com <pruebauno(a)latinmail.com> wrote: > I think this combination might do the trick (I don't have 2.6 to test > it right now): > from __future__ import print_function > from __future__ import unicode_literals > from functools import partial > import io > print = partial(print, sep=" ", end="\n") > out = io.StringIO() > print("hello", file=out) The example works, but unicode_literals causes problems elsewhere, in optparse for example. I didn't look into it too closely. I'll probably give up trying to anticipate 3.0 with 2.6 too closely. -Bill -- Sattre Press Tales of War http://sattre-press.com/ by Lord Dunsany info(a)sattre-press.com http://sattre-press.com/tow.html
First
|
Prev
|
Pages: 1 2 3 4 Prev: Small problem with Psyco Next: IMAP: How to implement GMail-like threaded conversations view |