1 金额转化(中文大写转化为数字)
CN_NUM = {
'〇': 0, '一' : 1, '二' : 2, '三' : 3, '四' : 4, '五': 5, '六' : 6, '七' : 7, '八' : 8, '九' : 9, '零': 0,
'壹': 1, '贰' : 2, '叁' : 3, '肆' : 4, '伍' : 5, '陆': 6, '柒' : 7, '捌' : 8, '玖' : 9, '貮' : 2, '两': 2,
}
CN_UNIT = {
'十': 10,
'拾': 10,
'百': 100,
'佰': 100,
'千': 1000,
'仟': 1000,
'万': 10000,
'萬': 10000,
'亿': 100000000,
'億': 100000000,
'兆': 1000000000000,
}
def chinese_to_arabic(cn:str) -> int:
unit = 0
ldig = []
for cndig in reversed(cn):
if cndig in CN_UNIT:
unit =CN_UNIT.get(cndig)
if unit == 10000or unit == 100000000:
ldig.append(unit)
unit = 1
else:
dig = CN_NUM.get(cndig)
if unit:
dig *= unit
unit = 0
ldig.append(dig)
if unit == 10:
ldig.append(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
def test():
cn = input("请输入金额:")
x = chinese_to_arabic(cn)
print(cn, x)
if __name__ == '__main__':
test()
运行结果: