Python 中文 大寫 數字轉阿拉伯數字

2021-08-24 17:38:15 字數 1367 閱讀 1878

中文轉數字,小數的化考慮點字進一步封裝即可。

# 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...