5

Python には、すべての文字が数字かどうかをテストする string の関数があります: string.isdigit().

マニュアルには次のように書かれています。

8 ビット文字列の場合、このメソッドはロケールに依存します

このメソッドはどのようにロケールに依存していますか? 0 ~ 9 の範囲外の数字があるのはどのロケールですか?

また、これがロケールに依存する場合、Python には特定のロケール (つまり、0 ~ 9 桁のみ) でチェックする方法がありますか。

4

2 に答える 2

4

CPython は、文字列の is_digit メソッドに C 関数 "isdigit" を使用します (stringobject.c を参照)。この関連スレッドを参照してください: Isdigit は合法的に C でロケールに依存することができます

どうやら、0xB2 ('²')、0xB3 ('³')、0xB9 ('¹') などの上付き数字に関係しているようです。

HTH

于 2012-07-02T14:28:32.063 に答える
1

Pythonには、特定のロケール(つまり、0〜9桁のみ)でチェックするためのメソッドがありますか?

最も簡単な方法:

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

あなたもチェックすることができますord、それはより速いかもしれません(そうではありません):

>>> ord('0') <= ord('a') <= ord('9')
False
>>> ord('0') <= ord('5') <= ord('9')
True
于 2012-07-02T14:26:49.643 に答える