Indented multi-line strings

Mikhail V mikhailwas at gmail.com
Wed May 23 19:27:31 EDT 2018


On Wed, May 23, 2018 at 11:45 PM, MRAB <python at mrabarnett.plus.com> wrote:

>>> def func():
>>>     foobar
>>>     data = /// s2
>>>       first line
>>>       last line
>>>     foobar
>>>

> Instead of the "s2", etc:
>
> def func():
>     foobar
>     data = >> :
>       first line
>       last line
>     foobar
>
> Leading indentation to the level of the first line would be stripped.
>
> If you want additional indentation, then provide a string literal:
>
> def func():
>     foobar
>     data = >> '    ':
>       first line
>       last line
>     foobar

Such approach has its benefits.
and ">>" looks nice.

So the benefit here is that you make it more
compact - no parameters needed.
But as you see, it just cannot parse the text in
case of positive indent.
Or otherwise I need to edit the text and then, if say I want
to paste it back elsewhere - edit again. This small nuance can
get in the way.
Also semantically - I find it a bit of implication - it's something
automatic.


> As the last line also ends with '\n', the result should be 'first line\nlast
> line\n'.

Sorry, I can't see how this would be beneficial?
This would mean every string will have trailing \n.
Even if it is one word.
Maybe it could help in some cases, for example
if you write a code generator and then append to
a file consequently.
But in general I disagree with this approach.

Also it is counter-intuitive - for example if I open a
text editor and type "a", save it and then read it with
python script - then I get only "a" but not "a\n".

But maybe I am missing something.



More information about the Python-list mailing list