python-tabulate icon indicating copy to clipboard operation
python-tabulate copied to clipboard

Idea/Feature Request: Allow callable for `floatfmt`.

Open jagerber48 opened this issue 2 years ago • 3 comments

I have a custom formatter for floats. One example feature is that I can format floats to be in exponential notation but to always have an exponent that is a multiple of 3 (engineering notation). Right now if I apply this formatter to a table (e.g. list of lists) and then run it through tabulate, all of the floats (now strings) will be re-cast as floats and reformatted using the default float format. This is not what I want. In fact, because "float castable stings" get converted back to floats it's actually impossible for me to get what I want. What would be better is if I can pass in a callable function to be used to format floats instead of just a python built-in format specification mini-language specifier

jagerber48 avatar Oct 21 '23 19:10 jagerber48

I am facing a similar issue while printing data using tabulate-

File "c:<FILEPATH>\VSCode\QuizApp\controllers\handlers\quiz_handler.py", line 59, in display_questions_by_category
pretty_print( File "c:<FILEPATH>\VSCode\QuizApp\utils\pretty_print.py", line 12, in pretty_print print(tabulate(data, headers=headers, tablefmt='rounded_grid', showindex=row_id)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:<FILEPATH>\Lib\site-packages\tabulate_init_.py", line 2153, in tabulate cols = [ ^ File "C:<FILEPATH>\Lib\site-packages\tabulate_init_.py", line 2154, in <listcomp> [format(v, ct, fl_fmt, int_fmt, miss_v, has_invisible) for v in c] File "C:<FILEPATH>\Lib\site-packages\tabulate_init.py", line 2154, in <listcomp> [format(v, ct, fl_fmt, int_fmt, miss_v, has_invisible) for v in c] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:<FILEPATH>\Lib\site-packages\tabulate_init.py", line 1232, in _format return format(float(val), floatfmt) ^^^^^^^^^^ ValueError: could not convert string to float: 'True'

Type of data I am printing -

<class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'>

Shreyansh-Agrawal avatar Nov 02 '23 05:11 Shreyansh-Agrawal

fix image

nunamia avatar Feb 21 '24 10:02 nunamia

I was able to work around this issue fine by setting disable_numparse=True. I was pretty surprised to see this sort of auto-parsing done by default with an option to suppress this behavior slightly buried in the docs.

jagerber48 avatar Feb 23 '24 06:02 jagerber48