ZH_NUM_CHAR_DICT = { '1': 1,'一': 1,'壹': 1,'幺': 1, '2': 2,'二': 2,'俩': 2,'两': 2,'贰': 2, '3': 3,'三': 3,'仨': 3,'叁': 3, '4': 4,'四': 4,'肆': 4, '5': 5,'五': 5,'伍': 5, '6': 6,'六': 6,'陆': 6, '7': 7,'七': 7,'柒': 7,'拐': 7, '8': 8,'八': 8,'捌': 8, '9': 9,'九': 9,'玖': 9,'勾': 9, '0': 0,'零': 0,'〇': 0,'洞': 0,'O': 0,'o': 0, } ZH_NUM_CHAR_DICT2 = { '亿': (100000000,True), '万': (10000,True), '千': (1000,False),'仟':(1000,False), '百': (100,False),'佰': (100,False), '十': (10,False),'拾':(10,False), '个': (1,True) } def Zh2Int(chars): result = 0 buffer = 0 buffer2 = 0 prev_is_num = False if chars == '个': return 1 chars = chars.replace('廿','二十') for c in chars: if c in ZH_NUM_CHAR_DICT.keys(): if prev_is_num: buffer *= 10 buffer += ZH_NUM_CHAR_DICT[c] prev_is_num = True elif c in ZH_NUM_CHAR_DICT2.keys(): if ZH_NUM_CHAR_DICT2[c][1]: buffer2 += buffer result += buffer2 * ZH_NUM_CHAR_DICT2[c][0] buffer2 = 0 else: if buffer == 0: buffer = 1 buffer2 += buffer * ZH_NUM_CHAR_DICT2[c][0] buffer = 0 prev_is_num = False else: raise ValueError(f"存在无法识别的字符:{c}") result += buffer2 + buffer return result