[Tutor] Escaping a single quote mark in a triple quoted string.

Ray Parrish crp at cmc.net
Sat Mar 13 23:54:06 CET 2010


Steven D'Aprano wrote:
> On Sun, 14 Mar 2010 04:33:57 am Ray Parrish wrote:
>   
>> Hello,
>>
>> I am getting the following -
>>
>>  >>> String = """<a href="http://www.rayslinks.com">Ray's Links</a>"""
>>  >>> String
>> '<a href="http://www.rayslinks.com">Ray\'s Links</a>'
>>
>> Note the magically appearing back slash in my result string.
>>     
>
> You are confusing the printed representation of the string with the 
> contents of the string. The backslash is not part of the string, any 
> more than the leading and trailing quotes are part of the string. They 
> are part of the display of the string.
>
> Consider:
>
>   
>>>> s = "ABC"  # Three characters A B C.
>>>> s  # Looks like five?
>>>>         
> 'ABC'
>   
>>>> len(s)  # No, really only three.
>>>>         
> 3
>
> The quotes are not part of the string, but part of the printable 
> representation. This is supposed to represent what you would type to 
> get the string ABC. You have to type (quote A B C quote).
>
> Now consider:
>
>   
>>>> s = """A"'"B"""  # Five chars A double-quote single-quote d-quote B
>>>> s  # Looks like eight?
>>>>         
> 'A"\'"B'
>   
>>>> len(s)  # But actually only five.
>>>>         
> 5
>
> When printing the representation of the string, Python always wraps it 
> in quotation marks. If the contents include quotation marks as well, 
> Python will escape the inner quotation marks if needed, but remember 
> this is only for the display representation. If you want to see what 
> the string looks like without the external quotes and escapes:
>
>   
>>>> print s
>>>>         
> A"'"B
>
>
>   
>>  >>> NewString = """'"""
>>  >>> NewString
>>
>> "'"
>> Hmmm, no back slash this time...
>>     
>
> In this case, the string itself only contains a single-quote, no 
> double-quote, so when showing the representation, Python wraps the 
> contents with double-quotes and there is no need to escape the 
> single-quote.
>
> Python's rules for showing the representation of the string includes:
>
> * wrap the string contents in single quotes '
> * unless the string contains single quotes, in which case wrap it 
>   in double quotes " and display the single quotes unescaped
> * unless the string contains double quotes as well, in which case 
>   wrap it in single quotes and escape the inner single quotes.
>
> But remember: this is only the display of the string, not the contents.
>   
Thank you, that was a very concise description, and has aided my 
comprehension greatly. Now if I can just keep it separate from the 
syntax in JavaScript, I'll be doing good. I keep a good record of these 
forum posts, so I can re-read this if necessary.

Later, Ray Parrish

-- 
Linux dpkg Software Report script set..
http://www.rayslinks.com/LinuxdpkgSoftwareReport.html
Ray's Links, a variety of links to usefull things, and articles by Ray.
http://www.rayslinks.com
Writings of "The" Schizophrenic, what it's like to be a schizo, and other
things, including my poetry.
http://www.writingsoftheschizophrenic.com




More information about the Tutor mailing list