The play "All's Well That Ends Well" by Shakespeare
It's easy do it :
>>> print """The play "All's Well That Ends Well" by Shakespeare"""
The play "All's Well That Ends Well" by Shakespeare
Now, change the sentence to this one :
The play "All's Well That Ends Well"
Using triple single quotes works fine
>>> print '''The play "All's Well That Ends Well"'''
The play "All's Well That Ends Well"
But the first method doesn't run correctly :
>>> print """The play "All's Well That Ends Well""""
File "<stdin>", line 1
print """The play "All's Well That Ends Well""""
^
SyntaxError: EOL while scanning single-quoted string
>>>
Any comment ?
Use triple simple single quotes:
>>> print '''"All's Well That Ends Well"'''
"All's Well That Ends Well"
--
Victor Stinner
http://www.haypocalc.com/
> But the first method doesn't run correctly :
>
>
>>>> print """The play "All's Well That Ends Well""""
> File "<stdin>", line 1
> print """The play "All's Well That Ends Well""""
> ^
> SyntaxError: EOL while scanning single-quoted string
>>>>
>>>>
>
> Any comment ?
Of course not. Quotes can't be nested, so the first time the parser hits
three quote marks, you have reached the end of the string. You then open
a new string with a single quote mark, and then fail to close it. Hence
the EOL while scanning a single-quoted string.
There are many solutions. Here are four:
>>> print """The play "All's Well That Ends Well\""""
The play "All's Well That Ends Well"
>>> print '''The play "All's Well That Ends Well"'''
The play "All's Well That Ends Well"
>>> print 'The play "All\'s Well That Ends Well"'
The play "All's Well That Ends Well"
>>> print 'The play "All' "'" 's Well That Ends Well"'
The play "All's Well That Ends Well"
--
Steven
IMO, the error message is misleading to many people, since in
many/most contexts the term "single-quoted" refers to this:
'here is a single quoted string'
And not this:
"this is a double-quoted string"
--
Grant Edwards grante Yow! And then we could sit
at on the hoods of cars at
visi.com stop lights!
The best thing would be to backslash the single quote: print 'The play
"All\'s Well That Ends Well"'
> The best thing would be to backslash the single quote: print 'The play
> "All\'s Well That Ends Well"'
Backslash-type escapes are the most general solution to this type of
problem. They’re also the easiest to apply automatically:
for ch in input_string :
if ch in troublesome_lot :
output backslash + tame representation of ch
else :
output ch
#end if
#end for
Thanks to all for yours responses.