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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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

  

posted @   Young_Mo  阅读(158)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示