On Sat, Jun 29, 2019 at 9:02 AM Andrew Barnert <abarn...@yahoo.com> wrote: > > On Jun 28, 2019, at 12:09, Chris Angelico <ros...@gmail.com> wrote: > > > > 1) For all the different types of object that can be read (integer, > > string, JSON blob, etc), have a function that will read one, stop when > > it's done, and report both the parsed object and the point where it > > stopped parsing. > > For a string, what does it mean to “read one”? Does it just munch everything, > or until the end of the line (whether \n or universal newlines), or until > white space, or just one character? Whichever one you decide is right is > probably trivial to implement (value, _, rest = arg.partition('\n')), but > unless the goal is “exactly what C scanf does” (in which case I’m not sure we > need a whole protocol-and-wrapper thing), there doesn’t seem to be a TOOWTDI > answer here. >
The %s marker would accept everything up to the next literal text. So if you say "%s@%s", it would read up to the at sign. The second part of the proposal would be doing that, though; the "%s" handler would simply accept everything and return it. > Meanwhile, the json module can already do this with the raw decode method > (although you to have to construct a decoder instance, as it doesn’t have a > convenience wrapper like loads), and so can lots of other things (even stuff > like struct.unpack_from), but they mostly have a wide range of inconsistent > APIs. Maybe just having a consistent “val, rest = parse_one(source_str, > type)” function that calls a dunder protocol type.__parse_one__(source_str) > or accesses a registry that each module can add to (and users can customize), > or …? > Yes, that's what I mentioned as being possible to hack around with JSON parsing, but it's not exactly an API, and it's something that could be done way better for other protocols too. ChrisA _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/ZDGGN2IJSNQ74VWCB4KJZBBWYCBWGXVC/ Code of Conduct: http://python.org/psf/codeofconduct/