Java - Python - 在Python中是否有相当于java的Character.getNumericValue?

时间:2014-02-04 22:14:46

标签: java python

我有一个非常简单的java课程,我试图移植到Python,但我被困在了一线:

int value = Character.getNumericValue(character);

我找到了this示例,但我不明白Character.getNumericValue(character)如何返回10(因为例如ASCII值为65)。

如果不理解这一行,就很难移植它。

2 个答案:

答案 0 :(得分:1)

Character.getNumericValue()会为10返回A,因为它是数字系统中的数字,其基数超过十进制系统(例如十六进制,一直到35基数):

>>> int('A', 36)
10
>>> int('Z', 36)
35

来自Character.getNumericValue() documenation

  

字母AZ以大写字母('\u0041''\u005A'),小写字母('\u0061''\u007A')和全宽变体('\uFF21'到{ {1}}和'\uFF3A''\uFF41')表单具有从10到35的数值。这与Unicode规范无关,后者不会为这些'\uFF5A'值指定数值。 / p>

没有直接的Python等价物; char也解释罗马数字,例如,你必须自己编写这样的映射。

答案 1 :(得分:0)

没有一个现成的Python函数是等价的,但我认为两个函数组合涵盖了整个范围。对于ASCII字符0..9和A..Z,具有正确基本参数(36)的int()就足够了。为了获得unicode代码点的数值,有unicodedata.numeric,因为它会返回一个浮点数。