#!/usr/bin/python
# -*- coding: UTF-8 -*-
num_map = {
'一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9,
'十': 10, '百': 100, '千': 1000, '万': 10000, '亿': 100000000,
}
def sectionChinese(str):
res = 0
sectionNum = 0
for i in range(len(str)):
v = num_map.get(str[i])
if v<=9 and v>=0:
sectionNum = v
if i == len(str) - 1:
res=res+sectionNum
elif v == 10 or v==100 or v==1000:
# 处理"十"开头的
if i == 0:
sectionNum = 1
sectionNum = sectionNum * v
res = res+sectionNum
return res
def ChineseToNumber(string):
if "零" in string:
string = string.replace("零","")
flag = False
k = 0
str1 = ''
str2 = ''
str3 = ''
for i in range(len(string)):
if string[i] == "亿":
k = i+1
str1 = string[0:i]
flag = True
if "万" not in string and i+1 < len(string):
str3 = string[i+1:]
elif string[i] == "万":
str2 = string[k:i]
if i+1 < len(string):
str3 = string[i+1:]
flag = True
if not flag:
str3 = string
result = sectionChinese(str1)*100000000+sectionChinese(str2)*10000+sectionChinese(str3)
return result
String= ["三","六","八","二十","八十","一百","三百","一千","一万","十万","三十万","二十万","三百万",
"一亿","十亿","二十亿","四百亿","四千亿","二十三","四十五","三十六","三百二十","六百三十",
"八百九十","三千六百二十","五千七百三十","一万二千二百三十六","十万八千六百三十四","二十万三千",
"二十万零三千","一百万零八千零六十","七百万零五十六","四百万","一千万零八百六十四","八千万零九百八十二",
"一亿零八十","一亿八千六百三十二万三千六百五十二","十亿六千零五十四万三千","九亿零八百六十二","三百亿",
"三百亿零四百八十万三千六百二十","三百亿零三十","三百亿三千万","三百亿零三万"]
for string in String:
print (string+"--->"+str(ChineseToNumber(string)))
"""
输出:
三--->3
六--->6
八--->8
二十--->20
八十--->80
一百--->100
三百--->300
一千--->1000
一万--->10000
十万--->100000
三十万--->300000
二十万--->200000
三百万--->3000000
一亿--->100000000
十亿--->1000000000
二十亿--->2000000000
四百亿--->40000000000
四千亿--->400000000000
二十三--->23
四十五--->45
三十六--->36
三百二十--->320
六百三十--->630
八百九十--->890
三千六百二十--->3620
五千七百三十--->5730
一万二千二百三十六--->12236
十万八千六百三十四--->108634
二十万三千--->203000
二十万零三千--->203000
一百万零八千零六十--->1008060
七百万零五十六--->7000056
四百万--->4000000
一千万零八百六十四--->10000864
八千万零九百八十二--->80000982
一亿零八十--->100000080
一亿八千六百三十二万三千六百五十二--->186323652
十亿六千零五十四万三千--->1060543000
九亿零八百六十二--->900000862
三百亿--->30000000000
三百亿零四百八十万三千六百二十--->30004803620
三百亿零三十--->30000000030
三百亿三千万--->30030000000
三百亿零三万--->30000030000
"""
思路:
参考:https://blog.csdn.net/a897180673/article/details/79364584