I'm reading JSON output from an input file, and extracting values. Many of the fields are meant to be numerical, however, some fields are wrapped in a "floatApprox" dict, which messed with my parsing.
For example: { "hostname": "example.com", "version": "3.0.5", "pid": { "floatApprox": 18403 } "network": { "bytesIn": 123123, "bytesOut": { "floatApprox": 213123123 } } The floatApprox wrapping appears to happen sporadically in the input. I'd like to find a way to deal with this robustly. For example, I have the following function: def strip_floatApprox_wrapping(field): # Extracts a integer value from a field. Workaround for the float_approx wrapping. try: return int(field) except TypeError: return int(field['floatApprox']) which I can then call on each field I want to extract. However, this relies on casting to int, which will only work for ints - for some fields, they may actually be floats, and I'd like to preserve that if possible. (I know there's a isnumber() field - but you can only call that on a string - so if I do hit a floatApprox field, it will trigger a AttributeError exception, which seems a bit clunky to handle). def strip_floatApprox_wrapping(field): # Extracts a integer value from a field. Workaround for the float_approx wrapping. try: if field.isnumeric(): return field except AttributeError: return field['floatApprox'] Is there a way to re-write strip_floatApprox_wrapping to handle both ints/floats, and preserve the original format? Or is there a more elegant way to deal with the arbitrary nesting with floatApprox? -- https://mail.python.org/mailman/listinfo/python-list