New submission from picomancer:
Try the following in your favorite Python version:
import json
json.loads(".5")
On my Python (2.7.4 and 3.3.1 on Ubuntu Saucy Salamander), I get an exception.
However, x = .5 is a valid Python number.
With respect to the parsing of floats by the json module, the docs state:
By default, this is equivalent to ``float(num_str)``.
This statement does not match the behavior I have observed in every version of
Python I have tried, and is still in the bleeding-edge (as of this writing) at
http://hg.python.org/cpython/file/9283a9c5d0ce/Doc/library/json.rst
I think it's clear that the following changes should definitely be implemented:
(1) The docs and behavior should match
(2) Whatever the desired behavior is, there is a unit test specifically for
this corner case
Of course, to implement (1), there are two routes:
(1a) Leading decimal floats should be accepted by the json module; the behavior
should be changed to match the docs. Supported by Postel's Law -- "be liberal
in what [your program] accept[s]"), see
http://en.wikipedia.org/wiki/Postel%27s_law and the slightly relaxed attitude
toward standards compliance detailed in the json module documentation.
(1b) Leading decimal floats should be rejected by the json module; the docs
should be changed to match the behavior. This fits with a strict standards
compliance worldview.
I think (1a) is better. In my particular use case, I was manually writing a
json file with several numerical parameters. The backtrace given by
json.load(open("whatever.json", "r")) is uninformative and merely says "No JSON
object could be decoded"; finding the token the parser considered to be
malformed was fairly easy since there were only six or seven keys. It could
have been much worse if I was making manual changes to a larger JSON file.
----------
components: Library (Lib)
messages: 205080
nosy: picomancer
priority: normal
severity: normal
status: open
title: json module won't parse a float that starts with a decimal point
type: behavior
versions: Python 2.7, Python 3.3, Python 3.4, Python 3.5
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue19871>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com