Python には、すべての文字が数字かどうかをテストする string の関数があります: string.isdigit()
.
マニュアルには次のように書かれています。
8 ビット文字列の場合、このメソッドはロケールに依存します
このメソッドはどのようにロケールに依存していますか? 0 ~ 9 の範囲外の数字があるのはどのロケールですか?
また、これがロケールに依存する場合、Python には特定のロケール (つまり、0 ~ 9 桁のみ) でチェックする方法がありますか。
Python には、すべての文字が数字かどうかをテストする string の関数があります: string.isdigit()
.
マニュアルには次のように書かれています。
8 ビット文字列の場合、このメソッドはロケールに依存します
このメソッドはどのようにロケールに依存していますか? 0 ~ 9 の範囲外の数字があるのはどのロケールですか?
また、これがロケールに依存する場合、Python には特定のロケール (つまり、0 ~ 9 桁のみ) でチェックする方法がありますか。
CPython は、文字列の is_digit メソッドに C 関数 "isdigit" を使用します (stringobject.c を参照)。この関連スレッドを参照してください: Isdigit は合法的に C でロケールに依存することができます
どうやら、0xB2 ('²')、0xB3 ('³')、0xB9 ('¹') などの上付き数字に関係しているようです。
HTH
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