[Python-ideas] Idea for new multi-line triple quote literal

Markus Unterwaditzer markus at unterwaditzer.net
Mon Jul 1 07:50:30 CEST 2013


I think this could cause problems with multi-line strings that contain
additional indentation:

    def get_yaml():
        x = """
        foo: Bar
        user:
            fname: Hans
            lname: Gans
        """.dedent()
        return x


While i don't see many arguments why somebody would want to store configuration
files inside a string, i am sure many beginners who try to use this method will
be surprised by its behavior.

-- Markus

On Mon, Jul 01, 2013 at 11:47:29AM +1000, Nick Coghlan wrote:
> On 1 July 2013 11:09, Steven D'Aprano <steve at pearwood.info> wrote:
> > but in either case, I think the choice of --- as delimiter is ugly and
> > arbitrary, and very likely is ambiguous (currently, x = ---1 is legal code).
> > Similar suggestions to this have been made many times before, you should
> > search the archives:
> >
> > http://mail.python.org/mailman/listinfo/python-ideas
> 
> I'm still partial to the idea of offering textwrap.indent() and
> textwrap.dedent() as string methods.
> 
> 1. You could add a ".dedent()" at the end of a triple quoted string
> for this kind of problem. For a lot of code, the runtime cost isn't an
> issue.
> 2. A JIT would definitely be able to avoid recalculating the result every time
> 3. Even CPython may eventually gain constant folding for that kind of
> method applied directly to a string literal
> 4. I dedent and indent long strings more often than I capitalize,
> center, tab expand, or perform various other operations which already
> grace the str type as methods.
> 
> Cheers,
> Nick.
> 
> --
> Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas


More information about the Python-ideas mailing list