On Wed, 30 Mar 2022 at 15:11, Stephen J. Turnbull
<stephenjturnb...@gmail.com> wrote:
>
> Chris Angelico writes:
>
>  > [fruit] = sscanf(sample, "%*sfruit:%s\n")
>
> I'm warming to this idea.  It does hit the sweet spot of doing exactly
> what you want -- except when it can't do what you want at all. :-)
> It's concise and quite powerful, applicable to many common use cases.

It fits nicely between "x,sep,y = str.partition(...)" and a regular expression.

> I do have one windowframe of the bikeshed to paint: this is Python, so
> maybe just "scanf" is a fine name?

Sure, whether it's scanf or sscanf doesn't really matter to me. And -
I had to look this up - the converse is referred to in the docs as
"printf-style formatting", not sprintf. So that's an argument in
favour of "scanf".

> The first argument can be any
> iterable of characters, and if an iterator it would leave the
> iteration pointer where it left off (eg, beginning of next line in
> 'sample' above).

Hmm, I'm not really a fan. To be efficient, scanf will need to be able
to use core string searching functionality - str.index() is faster
than simply iterating over a string and comparing character by
character. I don't think, for instance, that json.load() promises
anything about where it leaves an iterable; in fact, I believe it
simply reads everything into a string and then parses that.

It would be worth supporting both byte strings and text strings,
though, for the same reason that they both support printf formatting.

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/5LHEYKCKVIYHEVCBVVEZDCWCZ4SCZKRX/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to