Python string interpolation using dictionary and strings Python string interpolation using dictionary and strings python python

Python string interpolation using dictionary and strings


You can try this:

data = {"path": "/var/blah",        "curr": "1.1",        "prev": "1.0"}s = "path: %(path)s curr: %(curr)s prev: %(prev)s" % data


And of course you could use the newer (from 2.6) .format string method:

>>> mydict = {"path": "/var/blah"}>>> curr = "1.1">>> prev = "1.0">>>>>> s = "path: {0} curr: {1} prev: {2}".format(mydict['path'], curr, prev)>>> s'path: /var/blah curr: 1.1 prev: 1.0'   

Or, if all elements were in the dictionary, you could do this:

>>> mydict = {"path": "/var/blah", "curr": 1.1, "prev": 1.0}>>> "path: {path} curr: {curr} prev: {prev}".format(**mydict)'path: /var/blah curr: 1.1 prev: 1.0'>>>

From the str.format() documentation:

This method of string formatting is the new standard in Python 3.0, and should be preferred to the % formatting described in String Formatting Operations in new code.


Why not:

mystr = "path: %s curr: %s prev: %s" % (mydict[path], curr, prev)

BTW, I've changed a couple names you were using that trample upon builtin names -- don't do that, it's never needed and once in a while will waste a lot of your time tracking down a misbehavior it causes (where something's using the builtin name assuming it means the builtin but you have hidden it with the name of our own variable).