Python has had awesome string formatters for many years but the documentation on them is far too theoretic and technical. With this site we try to show you the most common use-cases covered by the old and new style string formatting API with practical examples. All examples on this page work out of the box with with. Python documentation strings (or docstrings) provide a convenient way of associating documentation with Python modules, functions, classes, and methods. It’s specified in source code that is used, like a comment, to document a specific segment of code. Unlike conventional source code comments, the.
Templates are meant to be simpler than the the usual string formatting, at the cost of expressiveness. The rationale of compares templates to Python's%-style string formatting: Python currently supports a string substitution syntax based on C's printf '%' formatting character.
While quite rich,%-formatting codes are also error prone, even for experienced Python programmers. A common mistake is to leave off the trailing format character, e.g. The s in%(name)s. In addition, the rules for what can follow a% sign are fairly complex, while the usual application rarely needs such complexity. Most scripts need to do some string interpolation, but most of those use simple stringification' formats, i.e.%s or%(name)s` This form should be made simpler and less error prone. While the new.format improved the situation, it's still true that the is rather complex, so the rationale still has its points.
Its primarily a matter of syntax preference, which usually boils down to a laziness/verbosity tradeoff and familiarity/habits with existing string template systems. In this case template strings are more lazy/simple/quick to write, while.format is more verbose and feature-full. Programmers used to the PHP language or the Jinja family of template systems may prefer template strings. Using '%s' positional style tuple substitution might appeal to those who use printf-like string formatting or want something quick.format has a few more features, but unless you need something specific that only.format provides, there is nothing wrong with using any existing scheme. The only thing to be aware of is that named string templates are more flexible and require less maintenance than order-dependent ones.
Other than that it all comes down to either personal preference or the coding standard of the project you are working on.
New to python 2.4 is the string.Template class. It is similar to the formatting python already had in which the% operator with strings was used in a recognizable sprintf style of formatting from C. In addition to format types, you also had a choice with a tuple or dictionary mapping.
String.Template simplifies it to only the string format type and dictionary mapping. This makes string formatting easier to remember and use. This example shows you the basics of using the template and the difference with the old style.
The string.Template is a welcome addition to string formatting. The older sprintf style can be tedious to remember formatting for the dictionary mapping if you do not use it often. And, if you are familar with languages like perl, string.Template will also look familar since substitution in strings in perl use the $ notation.
There is also a SafeTemplate option you can use in cases where the dictionary may not have all the labels (check the docs for how to use it since it is still not final as of the alpha version of python). And finally, in true python style, you can of course subclass String.Template to do more fancy things.