问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

【python】如何把字符串类型的数字统一形式,如:"一亿三千万元"->"1300...

发布网友 发布时间:2024-09-25 17:15

我来回答

2个回答

热心网友 时间:2024-10-07 07:10

#!/usr/bin/env python    
# coding: utf-8    
dict ={u'零':0, u'一':1, u'二':2, u'三':3, u'四':4, u'五':5, u'六':6, u'七':7, u'八':8, u'九':9, u'十':10, u'百':100, u'千':1000, u'万':10000,    
      u'0':0, u'1':1, u'2':2, u'3':3, u'4':4, u'5':5, u'6':6, u'7':7, u'8':8, u'9':9,    
               u'壹':1, u'贰':2, u'叁':3, u'肆':4, u'伍':5, u'陆':6, u'柒':7, u'捌':8, u'玖':9, u'拾':10, u'佰':100, u'仟':1000, u'万':10000,    
      u'亿':100000000}    
def getResultForDigit(a, encoding="utf-8"):    
   if isinstance(a, str):    
       a = a.decode(encoding)    
   count = 0     
   result = 0    
   tmp = 0    
   Billion = 0      
   while count < len(a):    
       tmpChr = a[count]    
       #print tmpChr    
       tmpNum = dict.get(tmpChr, None)    
       #如果等于1亿    
       if tmpNum == 100000000:    
           result = result + tmp    
           result = result * tmpNum    
           #获得亿以上的数量,将其保存在中间变量Billion中并清空result    
           Billion = Billion * 100000000 + result    
           result = 0    
           tmp = 0    
       #如果等于1万    
       elif tmpNum == 10000:    
           result = result + tmp    
           result = result * tmpNum    
           tmp = 0    
       #如果等于十或者百,千    
       elif tmpNum >= 10:    
           if tmp == 0:    
               tmp = 1    
           result = result + tmpNum * tmp    
           tmp = 0    
       #如果是个位数    
       elif tmpNum is not None:    
           tmp = tmp * 10 + tmpNum    
       count += 1    
   result = result + tmp    
   result = result + Billion    
   return result    
if __name__ =="__main__":    
   test_map = {    
   '三千五百二十三' : 3523,    
   '七十五亿八百零七万九千二百零八':7508079208,    
   '四万三千五百二十一':43521,    
   '三千五百二十一':3521,    
   '三千五百零八':3508,    
   '三五六零':3560,    
   '一万零三十':10030,    
   '' : 0,    
   #1 digit 个    
   '零' : 0,    
   '一' : 1,    
   '二' : 2,    
   '三' : 3,    
   '四' : 4,    
   '五' : 5,    
   '六' : 6,    
   '七' : 7,    
   '八' : 8,    
   '九' : 9,    
   #2 digits 十    
   '十' : 10,    
   '十一' : 11,    
   '二十' : 20,    
   '二十一' : 21,    
   #3 digits 百    
   '一百' : 100,    
   '一百零一' : 101,    
   '一百一十' : 110,    
   '一百二十三' : 123,    
   #4 digits 千    
   '一千' : 1000,    
   '一千零一' : 1001,    
   '一千零一十' : 1010,    
   '一千一百' : 1100,    
   '一千零二十三' : 1023,    
   '一千二百零三' : 1203,    
   '一千二百三十' : 1230,    
   #5 digits 万    
   '一万' : 10000,    
   '一万零一' : 10001,    
   '一万零一十' : 10010,    
   '一万零一百' : 10100,    
   '一万一千' : 11000,    
   '一万零一十一' : 10011,    
   '一万零一百零一' : 10101,    
   '一万一千零一' : 11001,    
   '一万零一百一十' : 10110,    
   '一万一千零一十' : 11010,    
   '一万一千一百' : 11100,    
   '一万一千一百一十' : 11110,    
   '一万一千一百零一' : 11101,    
   '一万一千零一十一' : 11011,    
   '一万零一百一十一' : 10111,    
   '一万一千一百一十一' : 11111,    
   #6 digits 十万    
   '十万零二千三百四十五' : 102345,    
   '十二万三千四百五十六' : 123456,    
   '十万零三百五十六' : 100356,    
   '十万零三千六百零九' : 103609,    
   #7 digits 百万    
   '一百二十三万四千五百六十七' : 1234567,    
   '一百零一万零一百零一' : 1010101,    
   '一百万零一' : 1000001,    
   #8 digits 千万    
   '一千一百二十三万四千五百六十七' : 11234567,    
   '一千零一十一万零一百零一' : 10110101,    
   '一千万零一' : 10000001,    
   #9 digits 亿    
   '一亿一千一百二十三万四千五百六十七' : 111234567,    
   '一亿零一百零一万零一百零一' : 101010101,    
   '一亿零一' : 100000001,    
   #10 digits 十亿    
   '十一亿一千一百二十三万四千五百六十七' : 1111234567,    
   #11 digits 百亿    
   '一百一十一亿一千一百二十三万四千五百六十七' : 11111234567,    
   #12 digits 千亿    
   '一千一百一十一亿一千一百二十三万四千五百六十七' : 111111234567,    
   #13 digits 万亿    
   '一万一千一百一十一亿一千一百二十三万四千五百六十七' : 1111111234567,    
   #14 digits 十万亿    
   '十一万一千一百一十一亿一千一百二十三万四千五百六十七' : 11111111234567,    
   #17 digits 亿亿    
   '一亿一千一百一十一万一千一百一十一亿一千一百二十三万四千五百六十七' : 11111111111234567,    
   }    
   for each in test_map:    
       assert(test_map[each] == getResultForDigit(each))

 assert的作用是判断getResultForDigit与test_map里的对应key值是否一致

热心网友 时间:2024-10-07 07:07

百度:python汉语数字
第一个搜索结果就有了

热心网友 时间:2024-10-07 07:08

#!/usr/bin/env python    
# coding: utf-8    
dict ={u'零':0, u'一':1, u'二':2, u'三':3, u'四':4, u'五':5, u'六':6, u'七':7, u'八':8, u'九':9, u'十':10, u'百':100, u'千':1000, u'万':10000,    
      u'0':0, u'1':1, u'2':2, u'3':3, u'4':4, u'5':5, u'6':6, u'7':7, u'8':8, u'9':9,    
               u'壹':1, u'贰':2, u'叁':3, u'肆':4, u'伍':5, u'陆':6, u'柒':7, u'捌':8, u'玖':9, u'拾':10, u'佰':100, u'仟':1000, u'万':10000,    
      u'亿':100000000}    
def getResultForDigit(a, encoding="utf-8"):    
   if isinstance(a, str):    
       a = a.decode(encoding)    
   count = 0     
   result = 0    
   tmp = 0    
   Billion = 0      
   while count < len(a):    
       tmpChr = a[count]    
       #print tmpChr    
       tmpNum = dict.get(tmpChr, None)    
       #如果等于1亿    
       if tmpNum == 100000000:    
           result = result + tmp    
           result = result * tmpNum    
           #获得亿以上的数量,将其保存在中间变量Billion中并清空result    
           Billion = Billion * 100000000 + result    
           result = 0    
           tmp = 0    
       #如果等于1万    
       elif tmpNum == 10000:    
           result = result + tmp    
           result = result * tmpNum    
           tmp = 0    
       #如果等于十或者百,千    
       elif tmpNum >= 10:    
           if tmp == 0:    
               tmp = 1    
           result = result + tmpNum * tmp    
           tmp = 0    
       #如果是个位数    
       elif tmpNum is not None:    
           tmp = tmp * 10 + tmpNum    
       count += 1    
   result = result + tmp    
   result = result + Billion    
   return result    
if __name__ =="__main__":    
   test_map = {    
   '三千五百二十三' : 3523,    
   '七十五亿八百零七万九千二百零八':7508079208,    
   '四万三千五百二十一':43521,    
   '三千五百二十一':3521,    
   '三千五百零八':3508,    
   '三五六零':3560,    
   '一万零三十':10030,    
   '' : 0,    
   #1 digit 个    
   '零' : 0,    
   '一' : 1,    
   '二' : 2,    
   '三' : 3,    
   '四' : 4,    
   '五' : 5,    
   '六' : 6,    
   '七' : 7,    
   '八' : 8,    
   '九' : 9,    
   #2 digits 十    
   '十' : 10,    
   '十一' : 11,    
   '二十' : 20,    
   '二十一' : 21,    
   #3 digits 百    
   '一百' : 100,    
   '一百零一' : 101,    
   '一百一十' : 110,    
   '一百二十三' : 123,    
   #4 digits 千    
   '一千' : 1000,    
   '一千零一' : 1001,    
   '一千零一十' : 1010,    
   '一千一百' : 1100,    
   '一千零二十三' : 1023,    
   '一千二百零三' : 1203,    
   '一千二百三十' : 1230,    
   #5 digits 万    
   '一万' : 10000,    
   '一万零一' : 10001,    
   '一万零一十' : 10010,    
   '一万零一百' : 10100,    
   '一万一千' : 11000,    
   '一万零一十一' : 10011,    
   '一万零一百零一' : 10101,    
   '一万一千零一' : 11001,    
   '一万零一百一十' : 10110,    
   '一万一千零一十' : 11010,    
   '一万一千一百' : 11100,    
   '一万一千一百一十' : 11110,    
   '一万一千一百零一' : 11101,    
   '一万一千零一十一' : 11011,    
   '一万零一百一十一' : 10111,    
   '一万一千一百一十一' : 11111,    
   #6 digits 十万    
   '十万零二千三百四十五' : 102345,    
   '十二万三千四百五十六' : 123456,    
   '十万零三百五十六' : 100356,    
   '十万零三千六百零九' : 103609,    
   #7 digits 百万    
   '一百二十三万四千五百六十七' : 1234567,    
   '一百零一万零一百零一' : 1010101,    
   '一百万零一' : 1000001,    
   #8 digits 千万    
   '一千一百二十三万四千五百六十七' : 11234567,    
   '一千零一十一万零一百零一' : 10110101,    
   '一千万零一' : 10000001,    
   #9 digits 亿    
   '一亿一千一百二十三万四千五百六十七' : 111234567,    
   '一亿零一百零一万零一百零一' : 101010101,    
   '一亿零一' : 100000001,    
   #10 digits 十亿    
   '十一亿一千一百二十三万四千五百六十七' : 1111234567,    
   #11 digits 百亿    
   '一百一十一亿一千一百二十三万四千五百六十七' : 11111234567,    
   #12 digits 千亿    
   '一千一百一十一亿一千一百二十三万四千五百六十七' : 111111234567,    
   #13 digits 万亿    
   '一万一千一百一十一亿一千一百二十三万四千五百六十七' : 1111111234567,    
   #14 digits 十万亿    
   '十一万一千一百一十一亿一千一百二十三万四千五百六十七' : 11111111234567,    
   #17 digits 亿亿    
   '一亿一千一百一十一万一千一百一十一亿一千一百二十三万四千五百六十七' : 11111111111234567,    
   }    
   for each in test_map:    
       assert(test_map[each] == getResultForDigit(each))

 assert的作用是判断getResultForDigit与test_map里的对应key值是否一致

热心网友 时间:2024-10-07 07:15

百度:python汉语数字
第一个搜索结果就有了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 五分之四加上九又五分之四加上九十九走五分之四加上九百九十九又五分... 春真堂葛根粉真的减肥吗?谁用过?? 谷生缘的核桃首乌强肾养发粉有谁吃过,效果好吗 那里能买到谷生缘强肾养发粉 华为云服务在哪里开启或者关闭? 华为手机云服务在哪里打开? 包法利夫人作者 孩子音乐考研报专业艺术院校好吗? 准备报考西安音乐学院考研选择哪里课有帮助? 报考音乐考研班选择哪里? 新鲜贝母的最佳保存方法是什么? 想要考研去央美,不知道选择哪一个考研机构,艺术考研比较好的? 音乐考研的,星纽带的课程怎么样? 什么是实现电子政务的基础 男人表象中隐藏的真实性情 如图是正方体的展开图,请根据要求在六个面上标注字母.(1)正方体落下... 正方体的六个面分别写着A、C、D、E、F、I.与A相对的面是___,与E相对... ...六个面分别用字母A、B、C、D、E、F表示,则正方体前、后两个_百度... ...B,C,D,E,F的可见部分图1.图2是其中一个立方体的侧面展开图,那么它... 昆明到北京坐几次火车要多久,多少钱 1+2+3+4+...+54=? 考军队文职有什么用处 单片机的FLASH,SFR是什么意思 65寸电视宽多少厘米,高多少厘米? 手机128G和256G有什么区别? 张根硕新歌take me歌词? 张根硕《my bus》罗马音歌词··麻烦大家了~ 哪位大大知道张根硕 《拜托了my bus 》的韩文歌词啊。。。谢谢啊... Nature boy–张根硕歌词 张根硕 where is your star 听见了吗 歌词 没有有歌词 有带字幕的视... ...零食水果带到寝室吃,可是我有许多时候都不想和我的室友分享... 怎样解锁儿童手表的屏幕 火车票网上订票提前几天 火车票网上订票可以提前多少天-铁路资讯 铂金戒指多少钱一枚 铂金戒指要多少钱 卫星小锅3568接收机水货价钱是多少? 4英寸常规探针台 怎样分辩港行D608?麻烦说的详细些。现在价钱是多少。 什么是货币流通量 货币流通速度简介