> I used escape sequences to produce colour output, but a construct like > > print "%8s" % str_with_escape > > doesn't do the right thing. I suppose the padding counts the escape > characters, too. > > What could be a solution?
You omit half of the equation: the contents of str_with_escape. >>> print "hello %c[1mworld%c[0m" % (27, 27) works just fine for me in Linux (it chokes a bit on Win32 under cmd.exe, printing the actual escape character, rather than interpreting it as an ANSI control sequence). One can even do fancy stuff like: >>> mapping = {'bold': '\x1b[1m', 'normal':'\x1b[0m', 'blue':'\x1b[34m'} >>> print "this has some %(bold)sbold%(normal)s text and some %(blue)sblue%(normal)s text and some %(bold)s%(blue)stext that is bold and blue%(normal)s in it" % mapping and it works with %8s as well. You might prefer to use the standard curses library rather than try and roll your own... -tkc -- http://mail.python.org/mailman/listinfo/python-list