Skip to content

ValueError: could not convert string to float: 'True' #135

@wjfwzzc

Description

@wjfwzzc

version: 0.8.9, Python 3.6.9, reproduction code:

In [1]: from tabulate import tabulate
   ...: data = dict(a=0.1, b=True, c="c")
   ...: table = [(str(k), str(v)) for k, v in data.items()]

In [2]: print(tabulate(table))
-  ----
a  0.1
b  True
c  c
-  ----

In [3]: print(tabulate(table[:2]))
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-16d27c33d4d2> in <module>
----> 1 print(tabulate(table[:2]))

/usr/local/lib/python3.6/dist-packages/tabulate.py in tabulate(tabular_data, headers, tablefmt, floatfmt, numalign, stralign, missingval, showindex, disable_numparse, colalign)
   1299             missing_vals.extend( (len(cols)-len(missing_vals)) * [_DEFAULT_MISSINGVAL] )
   1300     cols = [[_format(v, ct, fl_fmt, miss_v, has_invisible) for v in c]
-> 1301              for c, ct, fl_fmt, miss_v in zip(cols, coltypes, float_formats, missing_vals)]
   1302 
   1303     # align columns

/usr/local/lib/python3.6/dist-packages/tabulate.py in <listcomp>(.0)
   1299             missing_vals.extend( (len(cols)-len(missing_vals)) * [_DEFAULT_MISSINGVAL] )
   1300     cols = [[_format(v, ct, fl_fmt, miss_v, has_invisible) for v in c]
-> 1301              for c, ct, fl_fmt, miss_v in zip(cols, coltypes, float_formats, missing_vals)]
   1302 
   1303     # align columns

/usr/local/lib/python3.6/dist-packages/tabulate.py in <listcomp>(.0)
   1298         if len(missing_vals) < len(cols):
   1299             missing_vals.extend( (len(cols)-len(missing_vals)) * [_DEFAULT_MISSINGVAL] )
-> 1300     cols = [[_format(v, ct, fl_fmt, miss_v, has_invisible) for v in c]
   1301              for c, ct, fl_fmt, miss_v in zip(cols, coltypes, float_formats, missing_vals)]
   1302 

/usr/local/lib/python3.6/dist-packages/tabulate.py in _format(val, valtype, floatfmt, missingval, has_invisible)
    766             return val.replace(raw_val, formatted_val)
    767         else:
--> 768             return format(float(val), floatfmt)
    769     else:
    770         return "{0}".format(val)

ValueError: could not convert string to float: 'True'

If I replace str(v) by v:

In [1]: from tabulate import tabulate
   ...: data = dict(a=0.1, b=True, c="c")
   ...: table = [(str(k), v) for k, v in data.items()]

In [2]: print(tabulate(table))
-  ----
a  0.1
b  True
c  c
-  ----

In [3]: print(tabulate(table[:2]))
-  ---
a  0.1
b  1
-  ---

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinggood first issueGood for newcomers

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions