中文轉數字,小數的化考慮點字進一步封裝即可。
# constants for chinese_to_arabic
cn_num =
cn_unit =
def chinese_to_arabic(cn:str) -> int:
unit = 0 # current
ldig = # digest
for ***ig in reversed(cn):
if ***ig in cn_unit:
unit = cn_unit.get(***ig)
if unit == 10000 or unit == 100000000:
unit = 1
else:
dig = cn_num.get(***ig)
if unit:
dig *= unit
unit = 0
if unit == 10:
val, tmp = 0, 0
for x in reversed(ldig):
if x == 10000 or x == 100000000:
val += tmp * x
tmp = 0
else:
tmp += x
val += tmp
return val
# todo: make a full unittest
def test():
test_dig = ['八',
'十一',
'一百二十三',
'一千二百零三',
'一萬一千一百零一',
'十萬零三千六百零九',
'一百二十三萬四千五百六十七',
'一千一百二十三萬四千五百六十七',
'一億一千一百二十三萬四千五百六十七',
'一百零二億五千零一萬零一千零三十八']
for cn in test_dig:
x = chinese_to_arabic(cn)
print(cn, x)
assert x == 10250011038
if __name__ == '__main__':
test()
八 8
十一 11
一百二十三 123
一千二百零三 1203
一萬一千一百零一 11101
十萬零三千六百零九 103609
一百二十三萬四千五百六十七 1234567
一千一百二十三萬四千五百六十七 11234567
一億一千一百二十三萬四千五百六十七 111234567
一百零二億五千零一萬零一千零三十八 10250011038
python 中文大寫轉阿拉伯數字(金額)
輸入 金額的中文大寫 字串 輸出 阿拉伯數字 float或int型 整數部分主要是利用正規表示式進行檢索,將對應項的數字與單位列表的對應項相乘並求和,小數部分也是一樣的手法,但是由於可能存在只有角的情況,正規表示式不好處理,而且角 分這裡涉及的情況並不多,所以我們分離處理 1.初始化引數 2.處理整...
python 中文大寫轉阿拉伯數字(金額)
輸入 金額的中文大寫 字串 輸出 阿拉伯數字 float或int型 整數部分主要是利用正規表示式進行檢索,將對應項的數字與單位列表的對應項相乘並求和,小數部分也是一樣的手法,但是由於可能存在只有角的情況,正規表示式不好處理,而且角 分這裡涉及的情況並不多,所以我們分離處理 1.初始化引數 2.處理整...
js阿拉伯數字轉中文大寫
function dx n if 0 1 9 d d test n return 資料非法 var unit 千百拾億千百拾萬千百拾元角分 str n 00 var p n.indexof if p 0 n n.substring 0,p n.substr p 1,2 unit unit.subst...