Using repr() with escape sequences

Daniel Dittmar daniel.dittmar at sap.corp
Thu Feb 23 12:12:18 EST 2006


nummertolv wrote:
> - Consider a string variable containing backslashes.
> - One or more of the backslashes are followed by one of the letters
> a,b,f,v or a number.
> 
> myString = "bar\foo\12foobar"
> 
> How do I print this string so that the output is as below?
> 
> bar\foo\12foobar
> 
> typing 'print myString' prints the following:
> 
> bar
oo
> foobar
> 
> and typing print repr(myString) prints this:
> 
> 'bar\x0coo\nfoobar'
> 

The interpretation of escape sequences happens when the Python compiler 
reads the string "bar\foo\12foobar". You'll see that when you do 
something like
 >>> map (ord, "bar\foo\12foobar")
[98, 97, 114, 12, 111, 111, 10, 102, 111, 111, 98, 97, 114]
This displays the ASCII values of all the characters.

If you want to use a string literal containing backslashes, use r'' strings:
 >>> myString = r'bar\foo\12foobar'
 >>> map (ord, myString)
[98, 97, 114, 92, 102, 111, 111, 92, 49, 50, 102, 111, 111, 98, 97, 114]
 >>> print myString
bar\foo\12foobar
 >>> print repr (myString)
'bar\\foo\\12foobar'

If you get the strings from an external source as suggested by your 
original post, then you really have no problem at all. No interpretation 
of escape sequences takes place when you read a string from a file.

Daniel



More information about the Python-list mailing list