美文网首页
Python将汉字数字转换成阿拉伯数字的方法

Python将汉字数字转换成阿拉伯数字的方法

作者: 七彩色工作室 | 来源:发表于2017-07-18 11:03 被阅读0次
    CN_NUM = {
    u'〇' : 0,
    u'一' : 1,
    u'二' : 2,
    u'三' : 3,
    u'四' : 4,
    u'五' : 5,
    u'六' : 6,
    u'七' : 7,
    u'八' : 8,
    u'九' : 9,
     
    u'零' : 0,
    u'壹' : 1,
    u'贰' : 2,
    u'叁' : 3,
    u'肆' : 4,
    u'伍' : 5,
    u'陆' : 6,
    u'柒' : 7,
    u'捌' : 8,
    u'玖' : 9,
     
    u'貮' : 2,
    u'两' : 2,
    }
    CN_UNIT = {
    u'十' : 10,
    u'拾' : 10,
    u'百' : 100,
    u'佰' : 100,
    u'千' : 1000,
    u'仟' : 1000,
    u'万' : 10000,
    u'萬' : 10000,
    u'亿' : 100000000,
    u'億' : 100000000,
    u'兆' : 1000000000000,
    }
     
     
    def cn2dig(cn):
        lcn = list(cn)
        unit = 0 #当前的单位
        ldig = []#临时数组
     
        while lcn:
            cndig = lcn.pop()
     
            if CN_UNIT.has_key(cndig):
                unit = CN_UNIT.get(cndig)
                if unit==10000:
                    ldig.append('w')    #标示万位
                    unit = 1
                elif unit==100000000:
                    ldig.append('y')    #标示亿位
                    unit = 1
                elif unit==1000000000000:#标示兆位
                    ldig.append('z')
                    unit = 1
     
                continue
     
            else:
                dig = CN_NUM.get(cndig)
     
                if unit:
                    dig = dig*unit
                    unit = 0
     
                ldig.append(dig)
     
        if unit==10:    #处理10-19的数字
            ldig.append(10)
         
        ret = 0
        tmp = 0
     
        while ldig:
            x = ldig.pop()
     
            if x=='w':
                tmp *= 10000
                ret += tmp
                tmp=0
     
            elif x=='y':
                tmp *= 100000000
                ret += tmp
                tmp=0
     
            elif x=='z':
                tmp *= 1000000000000
                ret += tmp
                tmp=0
     
            else:
                tmp += x
     
        ret += tmp
        return ret
     
        #ldig.reverse()
        #print ldig
        #print CN_NUM[u'七']
     
     
    if __name__ == '__main__':
     
        test_dig = [u'九',
                    u'十一',
                    u'一百二十三',
                    u'一千二百零三',
                    u'一万一千一百零一',
                    u'十万零三千六百零九',
                    u'一百二十三万四千五百六十七',
                    u'一千一百二十三万四千五百六十七',
                    u'一亿一千一百二十三万四千五百六十七',
                    u'一百零二亿五千零一万零一千零三十八',
                    u'一千一百一十一亿一千一百二十三万四千五百六十七',
                    u'一兆一千一百一十一亿一千一百二十三万四千五百六十七',
                    ]
     
        for cn in test_dig: 
     
            print cn2dig(cn)
    

    转自http://www.iplaypy.com/code/base/b2600.html

    相关文章

      网友评论

          本文标题:Python将汉字数字转换成阿拉伯数字的方法

          本文链接:https://www.haomeiwen.com/subject/iaickxtx.html