[Python-ideas] Multi-line strings that respect indentation

Daniel da Silva ddasilva at umd.edu
Fri Nov 5 01:21:37 CET 2010


On several occasions I have run into code that will do something like the
following with a multiline string:


def some_func():
>     x, y = process_something()
>
>     val = """
> <xml>
>   <myThing>
>     <val>%s</val>
>     <otherVal>%s</otherVal>
>   </myThing>
>
</xml>
> """ % (x, y)
>
>     return val
>

To me, this is rather ugly because it messes up the indentation of
some_func(). Suppose we could have a multiline string, that when started on
a line indented four spaces, ignores the first four spaces on each line of
the literal when creating the actual string?

In this example, I will use four quotes to start such a string. I think the
syntax for this could vary though. It would be something like this:

def some_func():
>     x, y = process_something()
>
>     val = """"
>     <xml>
>       <myThing>
>         <val>%s</val>
>         <otherVal>%s</otherVal>
>       </myThing>
>     </xml>
>     """" % (x, y)
>
>     return val
>

That way, the indentation in the function would be preserved, making
everything easy to scan, and the indentation in the output would not suffer.


What do you all think?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20101104/75ec2be3/attachment.html>


More information about the Python-ideas mailing list