Pythonic way to create a long multi-line string Pythonic way to create a long multi-line string python python

Pythonic way to create a long multi-line string


Are you talking about multi-line strings? Easy, use triple quotes to start and end them.

s = """ this is a very        long string if I had the        energy to type more and more ..."""

You can use single quotes too (3 of them of course at start and end) and treat the resulting string s just like any other string.

NOTE: Just as with any string, anything between the starting and ending quotes becomes part of the string, so this example has a leading blank (as pointed out by @root45). This string will also contain both blanks and newlines.

I.e.,:

' this is a very\n        long string if I had the\n        energy to type more and more ...'

Finally, one can also construct long lines in Python like this:

 s = ("this is a very"      "long string too"      "for sure ..."     )

which will not include any extra blanks or newlines (this is a deliberate example showing what the effect of skipping blanks will result in):

'this is a verylong string toofor sure ...'

No commas required, simply place the strings to be joined together into a pair of parenthesis and be sure to account for any needed blanks and newlines.


If you don't want a multiline string, but just have a long single line string, you can use parentheses. Just make sure you don't include commas between the string segments (then it will be a tuple).

query = ('SELECT   action.descr as "action", '         'role.id as role_id,'         'role.descr as role'         ' FROM '         'public.role_action_def,'         'public.role,'         'public.record_def, '         'public.action'         ' WHERE role.id = role_action_def.role_id AND'         ' record_def.id = role_action_def.def_id AND'         ' action.id = role_action_def.action_id AND'         ' role_action_def.account_id = '+account_id+' AND'         ' record_def.account_id='+account_id+' AND'         ' def_id='+def_id)

In a SQL statement like what you're constructing, multiline strings would also be fine. But if the extra white space a multiline string would contain would be a problem, then this would be a good way to achieve what you want.


Breaking lines by \ works for me. Here is an example:

longStr = "This is a very long string " \        "that I wrote to help somebody " \        "who had a question about " \        "writing long strings in Python"