Search code examples
pythonstringcoding-styleformatting

Most elegant way to format multi-line strings in Python


I have a multiline string, where I want to change certain parts of it with my own variables. I don't really like piecing together the same text using + operator. Is there a better alternative to this?

For example (internal quotes are necessary):

line = """Hi my name is "{0}".
I am from "{1}".
You must be "{2}"."""

I want to be able to use this multiple times to form a larger string, which will look like this:

Hi my name is "Joan".
I am from "USA".
You must be "Victor".

Hi my name is "Victor".
I am from "Russia".
You must be "Joan".

Is there a way to do something like:

txt == ""
for ...:
    txt += line.format(name, country, otherName)

Solution

  • info = [['ian','NYC','dan'],['dan','NYC','ian']]
    >>> for each in info:
        line.format(*each)
    
    
    'Hi my name is "ian".\nI am from "NYC".\nYou must be "dan".'
    'Hi my name is "dan".\nI am from "NYC".\nYou must be "ian".'
    

    The star operator will unpack the list into the format method.