Escapeism

Steve Holden steve at holdenweb.com
Sat Sep 30 14:51:09 EDT 2006


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.
> 
No, you've overlooked the fact that if you print the string containing 
the two characters "backslash" and "lower case a" then it will print 
exactly those two characters. See:

In [30]: c = "\\a"

In [31]: len(c)
Out[31]: 2

In [32]: print c
\a

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC/Ltd          http://www.holdenweb.com
Skype: holdenweb       http://holdenweb.blogspot.com
Recent Ramblings     http://del.icio.us/steve.holden




More information about the Python-list mailing list