printio is a MIT licensed pretty printing library implemented in Python.
Format a value(s) for printing or display using Python's built-in String Format library.
- Most of the string formatting options from the Format Specification Mini-Language are available. See the formatting options here:
http://docs.python.org/release/3.1.2/library/string.html#format-specification-mini-language
- Align values to the left, right, or center.
- Pad and fill values.
- Sign numerical values.
- Convert integers to float.
- Specify precision for floating values - values are rounded up.
- Convert numbers to percentage formats. Ex. 0.10 ~ 10.0000%
- Add column headers or utilize default headers for your values.
- Column widths are automatically sized based on maximum width of the values.
- Choose which columns to format in your values.
- Ability to print to 'text' similar to how MySQL displays output to the console.
The major functions of printio:
- PrettyValue():
Formats a single value to a string.
- PrettyValues():
- Formats a list of lists or dicts.
- format: will return a list of strings including the header.
- text: will return a string similar to MySQL's console display format.
Made available under the MIT License.
First, some housekeeping items...
Import the library :
>>> from printio import PrettyValue
>>> from printio import PrettyValues
Create a list of values you wish to format. :
>>> lol = []
>>> lol.append([0, 'yhoo', 23.45])
>>> lol.append([1, 'goog', 200.4565])
>>> lol.append([2, 't', 1.00])
Let's also create a list of dictionaries to format as well. :
>>> keys = ['bar', 'symbol', 'close']
>>> lod = [dict(zip(keys, x)) for x in lol]
Now, let's get down to business...
Format a string with a width of 10, center-aligned, and filled with '-'. :
>>> value = 'yhoo'
>>> pv = PrettyValue('^10', fill='-')
>>> pv.format(value)
---yhoo---
Format a float with a decimal precision of 1. :
>>> value = 23.45599
>>> pv = PrettyValue('.1f')
>>> pv.format(value)
'23.5'
Format a float into a percentage. :
>>> value = 0.025
>>> pv = PrettyValue('.2%')
>>> pv.format(value)
'2.50%'
Format a list. :
>>> pv = PrettyValues()
>>> for row in pv.format([lol[0]]): print row
['0', '1 ', '2 ']
['0', 'yhoo', '23.45']
Format a dict. :
>>> pv = PrettyValues()
>>> pv.newcol('bar')
>>> pv.newcol('symbol')
>>> pv.newcol('close')
>>> for row in pv.format([lod[0]]): print row
['bar', 'symbol', 'close']
['0 ', 'yhoo ', '23.45']
Format a list of lists. :
>>> pv = PrettyValues()
>>> for row in pv.format(lol): print row
['0', '1 ', '2 ']
['0', 'yhoo', '23.45 ']
['1', 'goog', '200.4565']
['2', 't ', '1.0 ']
Same as above but this time in text. :
>>> pv = PrettyValues()
>>> results = pv.text(lol)
>>> print results
+---+------+----------+
| 0 | 1 | 2 |
+---+------+----------+
| 0 | yhoo | 23.45 |
| 1 | goog | 200.4565 |
| 2 | t | 1.0 |
+---+------+----------+
Want to add better column names? :
>>> pv.newcol(0, cname='Bar')
>>> pv.newcol(1, cname='Symbol')
>>> pv.newcol(2, cname='Close')
>>> print pv.text(lol)
+-----+--------+----------+
| Bar | Symbol | Close |
+-----+--------+----------+
| 0 | yhoo | 23.45 |
| 1 | goog | 200.4565 |
| 2 | t | 1.0 |
+-----+--------+----------+
Print only the Close column, always show sign, and format with decimal precision of 2. :
>>> pv = PrettyValues()
>>> pv.newcol(2, '+.2f', cname='Close')
>>> print pv.text(lol)
+---------+
| Close |
+---------+
| + 23.45 |
| +200.46 |
| + 1.00 |
+---------+
Print list of dictionaries with the numerical settings for the bar & close. :
>>> pv = PrettyValues()
>>> pv.newcol('bar', 'i')
>>> pv.newcol('symbol')
>>> pv.newcol('close', '.2f')
>>> print pv.text(lod)
+-----+--------+--------+
| bar | symbol | close |
+-----+--------+--------+
| 0 | yhoo | 23.45 |
| 1 | goog | 200.46 |
| 2 | t | 1.00 |
+-----+--------+--------+
- Add option to display title in addition to column headings.
- Add autonum column ability.
- Add tb_html to format to a html table.
- Add pre_html to format <pre> html </pre>.
- For additional information, please email: