string.isdigit()语言环境如何以及为何依赖?

时间:2012-07-02 13:59:47

标签: python locale digit

Python有字符串函数来测试所有字符是否都是数字:string.isdigit()

在手册中写道:

  

对于8位字符串,此方法依赖于语言环境

这种方法如何依赖于locale?在哪些区域设置中有0-9范围之外的数字?

此外,如果这是依赖于语言环境的,那么python是否有一种方法可以使用特定的语言环境(即只有0-9位数)进行检查。

2 个答案:

答案 0 :(得分:4)

CPython对字符串使用C函数“isdigit”作为is_digit方法(参见stringobject.c)。请参阅此相关主题:Can isdigit legitimately be locale dependent in C

显然,它与上标数字有关,如0xB2('²'),0xB3('³')和0xB9('¹')。

HTH

答案 1 :(得分:1)

  

python是否有一种方法可以使用特定的语言环境(即只有0-9位数)进行检查。

最简单的方法:

>>> '1' in '1234567890'
True
>>> 'a' in '1234567890'
False

你也可以检查ord 可能更快isn't):

>>> ord('0') <= ord('a') <= ord('9')
False
>>> ord('0') <= ord('5') <= ord('9')
True
相关问题