On 26.01.2018 09:53, Chris Angelico wrote:
> On Fri, Jan 26, 2018 at 7:42 PM, INADA Naoki <songofaca...@gmail.com> wrote:
>> Hi.
>>
>> Currently, int(), str.isdigit(), str.isalnum(), etc... accepts
>> non-ASCII strings.
>>
>>>>> s =  123"
>>>>> s
>> '123'
>>>>> s.isdigit()
>> True
>>>>> print(ascii(s))
>> '\uff11\uff12\uff13'
>>>>> int(s)
>> 123
>>
>> But sometimes, we want to accept only ascii string.  For example,
>> ipaddress module uses:
>>
>> _DECIMAL_DIGITS = frozenset('0123456789')
>> ...
>> if _DECIMAL_DIGITS.issuperset(str):
>>
>> ref: 
>> https://github.com/python/cpython/blob/e76daebc0c8afa3981a4c5a8b54537f756e805de/Lib/ipaddress.py#L491-L494
>>
>> If str has str.isascii() method, it can be simpler:
>>
>> `if s.isascii() and s.isdigit():`
>>
>> I want to add it in Python 3.7 if there are no opposite opinions.
>>
> 
> I'm not sure that the decimal-digit check is actually improved by
> this, but nonetheless, I am in favour of this feature. In CPython,
> this method can simply look at the object headers to see if it has the
> 'ascii' flag set; otherwise, it'd be effectively equivalent to:
> 
> def isascii(self):
>     return ord(max(self)) < 128
> 
> Would be handy when working with semi-textual protocols, where ASCII
> text is trivially encoded, but non-ASCII text may require negotiation
> or a protocol header.

+1

Just a note: checking the header in CPython will only give a hint,
since strings created using higher order kinds can still be 100%
ASCII.

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Experts (#1, Jan 26 2018)
>>> Python Projects, Coaching and Consulting ...  http://www.egenix.com/
>>> Python Database Interfaces ...           http://products.egenix.com/
>>> Plone/Zope Database Interfaces ...           http://zope.egenix.com/
________________________________________________________________________

::: We implement business ideas - efficiently in both time and costs :::

   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611
               http://www.egenix.com/company/contact/
                      http://www.malemburg.com/

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to