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

Carl Smith carl.input at gmail.com
Tue May 2 14:46:57 EDT 2017


The main reason for naming it `delimit` was to be consistent with the karg
`delimiter`, so `str.delimit(index, delimiter)`. You could call it `chop` I
guess, but I'm just bikeshedding, so will leave it while you guys figure
out the important stuff.

-- Carl Smith
carl.input at gmail.com

On 2 May 2017 at 18:48, David Mertz <mertz at gnosis.cx> wrote:

> On Tue, May 2, 2017 at 4:31 AM, Steven D'Aprano <steve at pearwood.info>
> 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:
>>
>> "1234ABCDEF".chunk(4)
>> => returns "1234 ABCD EF"
>>
>> rchunk will be useful for money or other situations where we group from
>> the right rather than from the left:
>>
>> "$" + str(10**6).rchunk(3, ',')
>> => returns "$1,000,000"
>>
>> # Format mobile phone number in the Australian style
>> "04123456".rchunk((4, 3))
>> => returns "0412 345 678"
>>
>> # Format an integer in the Indian style
>> str(123456789).rchunk((3, 2), ",")
>> => returns "12,34,56,789"
>>
>
> I like this general idea very much.  Dealing with lakh and crore is a very
> nice feature (and one that the `.format()` mini-language sadly fails to
> handle; it assumes numeric delimiters can only be commas, and only ever
> three positions).
>
> But I'm not sure the semantics you propose is flexible enough.  I take it
> that the tuple means (<first-delimiter>, <other-delimiters>) from your
> examples.  But I don't think that suffices for every common format.  It
> would be fine to get a USA phone number like:
>
>     str(4135559414 <(413)%20555-9414>).rchunk((4,3),'-')  # ->
> 413-555-9414 <(413)%20555-9414>
>
> But for example, looking somewhat at random at an international call (
> https://en.wikipedia.org/wiki/Telephone_numbers_in_Belgium)
>
> *Dialing from New York to Brussel**011-32-2-555-12-12 <+32%202%20555%2012%2012>* - Omitting the leading "0".
>
> Maybe your API is for any length tuple, with the final element repeated.
> So I guess maybe this example could be:
>
>     "0113225551212 <+32%202%20555%2012%2012>".rchunk((2,2,3,1,2,3),'-')
>
> I don't care about this method being called .chunk() vs. .delimit() vs.
> something else.
>
> --
> Keeping medicines from the bloodstreams of the sick; food
> from the bellies of the hungry; books from the hands of the
> uneducated; technology from the underdeveloped; and putting
> advocates of freedom in prisons.  Intellectual property is
> to the 21st century what the slave trade was to the 16th.
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170502/d93992e4/attachment-0001.html>


More information about the Python-ideas mailing list