(top posting corrected)

En Mon, 21 Apr 2008 21:12:44 -0300, [EMAIL PROTECTED] <[EMAIL PROTECTED]> escribió:

> def escape(string):
>     """
>     Escape both single quotes and blackslashes
>     >>> x = r"fun\fun"
>     >>> escape(x)
>     'fun\\\\fun'
>     """
>     string = string.replace('\\', '\\\\')
>     return string

> Failed example:
>     escape(x)
> Expected:
>     'fun\\fun'
> Got:
>     'fun\x0cun'

Your doctest is in a triple-quoted string which contains the line:

>>> x = r"fun\fun"
which is the same as:

>>> x = r"fun\x0cun"

If you wrap a raw string in just quotes that is isn't a raw string any
longer!

Thank you for the response.  I'm not sure I understand the last
sentence, although I think I get the idea.  How do I create a proper
doctest?

r"This is a raw string"

"""
    r"This is NOT a raw string"
"""

r"""
    r"This is a raw string too"
"""

What matters are the OUTER quotes.

Now, why do you want to escape the text yourself? Assuming you have a DBAPI compatible module, use bound parameters when you execute the query:

  cursor.execute("insert ... values (?,?,?)", (name, address, year))

Those ? are placeholders for the actual values; no explicit quoting on the values is required (the module itself, or the database, takes care of it). Not all databases support the ? style, there are other ways. See http://www.python.org/dev/peps/pep-0249/ for the DB API specification.

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to