首页 > 编程语言 > 详细

python2 中文小写数字转换成阿拉伯数字

时间:2021-07-19 16:58:38      阅读:11      评论:0      收藏:0      [点我收藏+]
 def dig2chars(s):
        """
        五百一十二 -->512
        一三二 --> 132
        """
        # 使用unicode编码
        fl = unicode(str(s).decode(‘gbk‘).encode(‘utf-8‘), ‘utf-8‘)
        # 先把数字提取
        part = re.compile(r‘[〇一二三四五六七八九十百]‘.decode(‘utf-8‘))
        fl = part.findall(fl)
        fl = ‘‘.join(fl)
        # 没有百十千是另一种方法处理
        part2 = re.compile(r‘[〇一二三四五六七八九]‘.decode(‘utf-8‘))
        res2 = part2.findall(fl)

        result = 0
        res_str = ‘‘
        r = 1
        fl_l = list(unicode(str(fl), ‘utf-8‘))
        
        china_dig = {u‘〇‘: 0, u‘一‘: 1, u‘二‘: 2, u‘三‘: 3, u‘四‘: 4, u‘五‘: 5,
                     u‘六‘: 6, u‘七‘: 7, u‘八‘: 8, u‘九‘: 9, u‘十‘: 10, u‘百‘: 100}
        # 反向遍历
        if u‘十‘ in fl_l or u‘百‘ in fl_l:
            for i in range(len(fl_l) - 1, -1, -1):
                val = china_dig.get(fl_l[i])
                if val:
                    # 处理十三 十四
                    if val >= 10 and i == 0:
                        if val > r:
                            r = val
                            result = result + val
                        else:
                            r = r * val
                    elif val >= 10:
                        if val > r:
                            r = val
                        else:
                            r = r * val
                    else:
                        result = result + r * val
        elif res2:
            for i in range(len(fl_l)):
                val = china_dig.get(fl_l[i])
                if val:
                    res_str += str(val)
                    result = res_str
                else:
                    result = s
        else:
            result = s
        return result

  

python2 中文小写数字转换成阿拉伯数字

原文:https://www.cnblogs.com/zzay/p/15030300.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!