将文字数字转阿拉伯数字(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 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!