string_formatter Code
Brought to you by:
anthon
---
version: 0.1
output: rst
fix_inline_single_backquotes: true
pdf: true
--- |
################
string_formatter
################
.. image:: https://bitbucket.org/ruamel/string_formatter/raw/default/_doc/_static/license.svg
:target: https://opensource.org/licenses/MIT
.. image:: https://bitbucket.org/ruamel/string_formatter/raw/default/_doc/_static/pypi.svg
:target: https://pypi.org/project/string_formatter/
.. image:: https://bitbucket.org/ruamel/oitnb/raw/default/_doc/_static/oitnb.svg
:target: https://bitbucket.org/ruamel/oitnb/
This package is a back-port of ``string.Formatter`` and its tests
to Python 2.7 and 3.3 (and 3.4.0 as shipping with Ubuntu 14.04
LTS/Linux Mint 17)
It allows empty keys in format strings as introduced in Python 3.4.1, and
fixes a bug ( ``"{:<{}} {}"`` ) when using nested empty keys, that is
available in all versions of ``string.Formatter()`` allowing empty keys (up
to at least 3.5.0rc3).
Usage
=====
The package can be used as a replacement for ``string``::
import string_formatter as string
Trailing(Lookup)Formatter
=========================
Additionally this package includes two additional formatters ``TrailingFormatter`` and
``TrailingLookupFormatter``.
TrailingFormatter
+++++++++++++++++
``TrailingFormatter``allows a type specification ``t`` with a single
character parameter. That parameter will be added to the (stringified)
value before applying (left-aligned) formatting. This way it is
possible to add a trailing colon directly attached to a key::
--- !python |
import string_formatter as string
fmt = string.TrailingFormatter()
d = dict(a=1, bc=2, xyz=18)
for key in sorted(d):
print(fmt.format("{:t{}<{}} {:>3}", key, ':', 15, d[key]))
--- !stdout |
giving::
--- |
because of the formatting internals, this is however restricted to inserting a
single character.
TrailingLookupFormatter
+++++++++++++++++++++++
``TrailingLookupFormatter`` works similar to ``TrailingFormatter``,
but instead of inserting the character, the character looked up in a
mapping that is part of the formatter. This lookup can be set by
providing parameters at the time of instantiation, or at a later
point. (In the following example named fields are used, but this works
with empty fields as well.)
--- !python |
from string_formatter import TrailingLookupFormatter
fmt = TrailingLookupFormatter(p='(parenthesis)')
fmt.lookup['s'] = '[square-brackets]'
fmt.lookup['c'] = '{curly-braces}'
for x in 'psc':
print(fmt.format("{fun:t{t}<{width}} by using{t:>2}",
fun=x.upper()*3,t=x, width=25))
--- !stdout |
giving::