将文字数字转阿拉伯数字(Python)

今天改进爬虫的时候有这样的需求,如果是文字的数字把他转化成数字存储。

然后百度了一下没什么能看的博客。

其实挺无奈的,搜出来的博客全是一样的代码,有的图都是COPY,尤指CSDN,博客质量大多很差。怀疑博主转的时候试了没?

这样COPY还不如不发,恶心。

于是自己写了代码,目前测试几例没什么问题,如果出现不规则的如”一二三四五万“这种会出现问题,不过这种本来就不符合规范

代码如下:

# 18.11.1更新,加入对诸如'人民币贰仟陆佰玖拾陆万陆仟零捌拾元玖角贰分'这种小数的判断

复制代码
 1 # -*- coding=utf-8 -*-
 2 # 18.10.29
 3 # 文字数字(汉语)转数字
 4 # 18.11.1
 5 # 更新对'人民币贰仟陆佰玖拾陆万陆仟零捌拾元玖角贰分'这种小数的判断
 6 
 7 cn_sum = {
 8     '': '0', '': '1', '': '2', '': '3', '': '4', '': '5', '': '6', '': '7', '': '8', '': '9', '': '0',
 9     '': '1', '': '2', '': '3', '': '4', '': '5', '': '6', '': '7', '': '8', '': '9', '': '2', '': '2',
10 }
11 
12 cn_unit = {
13     '': 10,
14     '': 10,
15     '': 100,
16     '': 100,
17     '': 1000,
18     '': 1000,
19     '': 10000,
20     '': 10000,
21     '亿': 100000000,
22     '': 100000000,
23     '': 1000000000000,
24     '': 0.1,
25     '': 0.01
26 }
27 
28 
29 def chn_to_sum(chn):
30     # 传入字符串
31     sum = 0
32     lis = []
33     flo = False
34     str_flo = ''
35     for i in chn:
36         if flo:
37             if i in cn_sum:
38                 str_flo += cn_sum[i]
39             if i in cn_unit:
40                 lis.append(cn_unit[i])
41         else:
42             if i == '':
43                 flo = True
44             if i in cn_sum:
45                 lis.append(cn_sum[i])
46             if i in cn_unit:
47                 lis.append(cn_unit[i])
48     for k in range(len(lis)):
49         if k == len(lis)-1:
50             if str_flo:
51                 sum += float('.'+str_flo)
52             if type(lis[k]) == str:
53                 sum = sum+int(lis[k])
54         if type(lis[k]) in [int, float]:
55             if lis[k] > sum:
56                 sum = (sum+int(lis[k-1]))*lis[k]
57             else:
58                 sum = sum + (int(lis[k-1])*lis[k])
59 
60     return round(sum, 2)
复制代码

 

发现问题请提醒我,希望可以帮到你

作者:chnmig

出处:https://www.cnblogs.com/chnmig/p/9870996.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ChnMig  阅读(4183)  评论(5编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题