Kay Schluehr wrote: > Sybren Stuvel wrote: > >> Kay Schluehr enlightened us with: >> >>> Usually I struggle a short while with \ and either succeed or give up. >>> Today I'm in a different mood and don't give up. So here is my >>> question: >>> >>> You have an unknown character string c such as '\n' , '\a' , '\7' etc. >>> >>> How do you echo them using print? >>> >>> print_str( c ) prints representation '\a' to stdout for c = '\a' >>> print_str( c ) prints representation '\n' for c = '\n' >>> ... >>> >>> It is required that not a beep or a linebreak shall be printed. >>> >> try "print repr(c)". >> > > This yields the hexadecimal representation of the ASCII character and > does not simply echo the keystrokes '\' and 'a' for '\a' ignoring the > escape semantics. One way to achieve this naturally is by prefixing > '\a' with r where r'\a' indicates a "raw" string. But unfortunately > "rawrification" applies only to string literals and not to string > objects ( such as c ). I consider creating a table consisting of pairs > {'\0': r'\0','\1': r'\1',...} i.e. a handcrafted mapping but maybe > I've overlooked some simple function or trick that does the same for > me. > > Kay > > Kay,
This is perhaps yet another case for SE? I don't really know, because I don't quite get what you're after. See for yourself: >>> import SE >>> Printabilizer = SE.SE ( ''' (1)=\\1 # All 256 octets can be written as parenthesized ascii (2)=\\2 "\a=\\a" # (7)=\\a" "\n=\\n" # or (10)=\\n or (10)=LF or whatever "\r=\\r" # (13)=CR "\f=\\f" "\v=\\v" # Add whatever other ones you like # and translate them to anything you like. ''') >>> print Printabilizer ('abd\aefg\r\nhijk\vlmnop\1\2.') abd\aefg\r\nhijk\vlmno\1\2. If you think this may help, you'll find SE here: http://cheeseshop.python.org/pypi/SE/2.2%20beta Regards Frederic -- http://mail.python.org/mailman/listinfo/python-list