Mandis Quotes (aka retiring """ and ''')

Russell Nelson nelson at
Mon Oct 4 16:45:54 CEST 2004

Jef Raskin (namedropping) has pointed me at a neat scheme for quoting
arbitrary textual matter called "Mandis quotes".  Since google is
ignorant of the phrase, I presume that Jef made it up.  It is
disgustingly simple, and very Pythonesque.  Here's how it works: If
you have a string that doesn't have any single quotes in it, you
surround the string by a pair of doubled single quotes.  ''Like
this''.  No backslash interpolation.  If you want a character in
there, you put it in there (yes, I know, stand down your armies).
Clearly, then, any character except a single quote can go into one of
these strings.  If you need to put a single quote in, then you put
an arbitrary string in-between the single quotes which does NOT
appear in the string.  For example, "Bill's house" becomes
'x'Bill's house'x'.

More formally, a mandis quote is a pair of tokens surrounding a
completely arbitrary sequence of bytes.  These tokens are comprised of
a possibly null sequence of characters preceded by and followed by a
single quote.

To save time, here's why this pre-PEP proposal sucks in decreasing
order of severity:

o Python source is typically represented, not as an arbitrary string
  of ASCII or Unicode characters, but instead as a sequence of lines
  separated by the native line terminator (e.g. CRLF, LF, or CR).

o Editors are not all up to the task of inserting arbitrary
  characters into strings (although they SHOULD).

o Email cannot withstand arbitrary strings of characters (although
  quoted-printable suffices).

o Some distinct Unicode characters are represented using the same
  glyph, so that information is lost when text gets printed (but
  that's more of a Unicode stupidism.)

Obviously, the justification for it is that it eliminates ", ', r",
r', """, and ''' from the syntax, replacing them by a single 'x' that
suffices for everything.  Makes the code easier to read (only one
visual element), easier to parse, and easier to write, because you
don't need to decide which literal method to use.

More information about the Python-list mailing list