[Python-ideas] Add an option for delimiters in bytes.hex()

Steven D'Aprano steve at pearwood.info
Tue May 2 20:43:33 EDT 2017


On Tue, May 02, 2017 at 11:39:48PM +0100, Erik wrote:
> On 02/05/17 12:31, Steven D'Aprano wrote:

> >Rather than duplicate the API and logic everywhere, I suggest we add a
> >new string method. My suggestion is str.chunk(size, delimiter=' ') and
> >str.rchunk() with the same arguments:

For the record, I now think the second argument should be called "sep", 
for separator, and I'm okay with Greg's suggestion we call the method
"group". 


> >"1234ABCDEF".chunk(4)
> >=> returns "1234 ABCD EF"
[...]

> Why do you want to limit it to strings?

I'm not stopping anyone from proposing a generalisation of this that 
works with other sequence types. As somebody did :-)

I've also been thinking about generalisations such as grouping lines 
into paragraphs, words into lines, etc. In text processing, chunking can 
refer to more than just characters.

But here we have a specific, concrete use-case that involves strings. 
Anything else is YAGNI until a need is demonstrated :-)

> Isn't something like this 
> potentially useful for all sequences (where the result is a tuple of 
> objects that are the same as the source sequence - be that strings or 
> lists or lazy ranges or whatever?). Why aren't the chunks returned via 
> an iterator?

String methods should return strings.

That's not to argue against a generic iterator solution, but the barrier 
to use of an iterator solution is higher than just calling a method. You 
have to learn about importing, you need to know there is an itertools 
module (or a third party module to install first!), you have to know how 
to convert the iterator back to a string...


-- 
Steve


More information about the Python-ideas mailing list