def test_numparser(): parsenumber = numparser() assert parsenumber('1') == 1 assert parsenumber('1.0') == 1.0 assert parsenumber(str(maxint + 1)) == maxint + 1 assert parsenumber('3+4j') == 3 + 4j assert parsenumber('aaa') == 'aaa' assert parsenumber(None) is None
def test_numparser_strict(): parsenumber = numparser(strict=True) assert parsenumber('1') == 1 assert parsenumber('1.0') == 1.0 assert parsenumber(str(maxint + 1)) == maxint + 1 assert parsenumber('3+4j') == 3 + 4j try: parsenumber('aaa') except ValueError: pass # expected else: assert False, 'expected exception' try: parsenumber(None) except TypeError: pass # expected else: assert False, 'expected exception'
def convertnumbers(table, strict=False, **kwargs): """ Convenience function to convert all field values to numbers where possible. E.g.:: >>> import petl as etl >>> table1 = [['foo', 'bar', 'baz', 'quux'], ... ['1', '3.0', '9+3j', 'aaa'], ... ['2', '1.3', '7+2j', None]] >>> table2 = etl.convertnumbers(table1) >>> table2 +-----+-----+--------+-------+ | foo | bar | baz | quux | +=====+=====+========+=======+ | 1 | 3.0 | (9+3j) | 'aaa' | +-----+-----+--------+-------+ | 2 | 1.3 | (7+2j) | None | +-----+-----+--------+-------+ """ return convertall(table, numparser(strict), **kwargs)