精华内容
下载资源
问答
  • Python转换数字到中文大写格式
    2020-11-20 23:41:44

    今天有人在群里问到Python怎么把小写数字转换成中文的大写字符,觉得这个问题很有趣,于是想了一下,就开始写代码了。

    以下是代码,感觉不足的地方就是如果是1001元,那么就会转换成 壹仟零佰零拾壹圆,多了个零。这个代码python2和python3都可以运行。

    # -*- coding:utf-8 -*-

    # date: 2018-02-28 11:48

    def digital_to_chinese(digital):

    str_digital = str(digital)

    chinese = {'1': '壹', '2': '贰', '3': '叁', '4': '肆', '5': '伍', '6': '陆', '7': '柒', '8': '捌', '9': '玖', '0': '零'}

    chinese2 = ['拾', '佰', '仟', '万', '厘', '分', '角']

    jiao = ''

    bs = str_digital.split('.')

    yuan = bs[0]

    if len(bs) > 1:

    jiao = bs[1]

    r_yuan = [i for i in reversed(yuan)]

    count = 0

    for i in range(len(yuan)):

    if i == 0:

    r_yuan[i] += '圆'

    continue

    r_yuan[i] += chinese2[count]

    count += 1

    if count == 4:

    count = 0

    chinese2[3] = '亿'

    s_jiao = [i for i in jiao][:3] # 去掉小于厘之后的

    j_count = -1

    for i in range(len(s_jiao)):

    s_jiao[i] += chinese2[j_count]

    j_count -= 1

    last = [i for i in reversed(r_yuan)] + s_jiao

    last_str = ''.join(last)

    print(str_digital)

    print(last_str)

    last_str = last_str.replace('0百', '0').replace('0十', '0').replace('000', '0').replace('00', '0').replace('0圆', '圆')

    for i in range(len(last_str)):

    digital = last_str[i]

    if digital in chinese:

    last_str = last_str.replace(digital, chinese[digital])

    print(last_str)

    return last_str

    if __name__ == '__main__':

    digital_to_chinese(123456789.456)

    这是输出

    123456789.456

    1亿2仟3佰4拾5万6仟7佰8拾9圆4角5分6厘

    壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆肆角伍分陆厘

    更多相关内容
  • python 数字转换为大写

    千次阅读 2021-03-05 15:22:40
    在会计的时候,用到将数字转换为大写,也就是讲数字转为汉字class cnumber:cdict = {}gdict = {}xdict = {}def __init__(self):self.cdict = {1: u'', 2: u'拾', 3: u'佰', 4: u'仟'}self.xdict = {1: u'元', 2: u'...

    在会计的时候,用到将数字转换为大写,也就是讲数字转为汉字

    class cnumber:

    cdict = {}

    gdict = {}

    xdict = {}

    def __init__(self):

    self.cdict = {1: u'', 2: u'拾', 3: u'佰', 4: u'仟'}

    self.xdict = {1: u'元', 2: u'万', 3: u'亿', 4: u'兆'} # 数字标识符

    self.gdict = {0: u'零', 1: u'壹', 2: u'贰', 3: u'叁', 4: u'肆', 5: u'伍', 6: u'陆', 7: u'柒', 8: u'捌', 9: u'玖'}

    def csplit(self, cdata): # 拆分函数,将整数字符串拆分成[亿,万,仟]的list

    g = len(cdata) % 4

    csdata = []

    lx = len(cdata) - 1

    if g > 0:

    csdata.append(cdata[0:g])

    k = g

    while k <= lx:

    csdata.append(cdata[k:k + 4])

    k += 4

    return csdata

    def cschange(self, cki): # 对[亿,万,仟]的list中每个字符串分组进行大写化再合并

    lenki = len(cki)

    i = 0

    lk = lenki

    chk = u''

    for i in range(lenki):

    if int(cki[i]) == 0:

    if i < lenki - 1:

    if int(cki[i + 1]) != 0:

    chk = chk + self.gdict[int(cki[i])]

    else:

    chk = chk + self.gdict[int(cki[i])] + self.cdict[lk]

    lk -= 1

    return chk

    def cwchange(self, data):

    cdata = str(data).split('.')

    cki = cdata[0]

    if len(cdata) == 1:

    i = 0

    chk = u''

    cski = self.csplit(cki) # 分解字符数组[亿,万,仟]三组List:['0000','0000','0000']

    ikl = len(cski) # 获取拆分后的List长度

    # 大写合并

    for i in range(ikl):

    if self.cschange(cski[i]) == '': # 有可能一个字符串全是0的情况

    chk = chk + self.cschange(cski[i]) # 此时不需要将数字标识符引入

    else:

    chk = chk + self.cschange(cski[i]) + self.xdict[ikl - i] # 合并:前字符串大写+当前字符串大写+标识符

    chk = chk + u'整'

    else:

    i = 0

    chk = u''

    cski = self.csplit(cki) # 分解字符数组[亿,万,仟]三组List:['0000','0000','0000']

    ikl = len(cski) # 获取拆分后的List长度

    # 大写合并

    for i in range(ikl):

    if self.cschange(cski[i]) == '': # 有可能一个字符串全是0的情况

    chk = chk + self.cschange(cski[i]) # 此时不需要将数字标识符引入

    else:

    chk = chk + self.cschange(cski[i]) + self.xdict[ikl - i] # 合并:前字符串大写+当前字符串大写+标识符

    # 处理小数部分

    ckj = cdata[1]

    lenkj = len(ckj)

    if lenkj == 1: # 若小数只有1位

    if int(ckj[0]) == 0:

    chk = chk + u'整'

    else:

    chk = chk + self.gdict[int(ckj[0])] + u'角整'

    else: # 若小数有两位的四种情况

    if int(ckj[0]) == 0 and int(ckj[1]) != 0:

    chk = chk + u'零' + self.gdict[int(ckj[1])] + u'分'

    elif int(ckj[0]) == 0 and int(ckj[1]) == 0:

    chk = chk + u'整'

    elif int(ckj[0]) != 0 and int(ckj[1]) != 0:

    chk = chk + self.gdict[int(ckj[0])] + u'角' + self.gdict[int(ckj[1])] + u'分'

    else:

    chk = chk + self.gdict[int(ckj[0])] + u'角整'

    return chk

    if __name__ == '__main__':

    pt = cnumber()

    print(pt.cwchange('14524')) # 壹万肆仟伍佰贰拾肆元整

    展开全文
  • 将金额数字转化为大写,格式规范标准。① 当没有零头时自动加xxxx元整 ② 小数能够精确到角、分、厘 ③ 能够处理1亿一下金额数字 ④ 使用方法:numToBig(金额),返回大写字符串
  • 将阿拉伯数字转换为大写数字,主要解决小数点问题,
  • Python数字转换中文大写

    千次阅读 2020-10-15 19:22:08
    关键在于如何解决10100中0的描述,通过判断上一位的值是否‘’零‘’,具体看代码: list1 = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖', '拾'] list2 = ['圆', '拾', '佰', '仟', '萬'] money...

    关键在于如何解决10100中0的描述,通过判断上一位的值是否为‘’零‘’,具体看代码:

    list1 = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖', '拾']
    list2 = ['圆', '拾', '佰', '仟', '萬']
    money = input("请输入金额:")
    money2 = ''
    for i in range(0, len(money)):
        if int(money[i]) != 0:
            money2 += list1[int(money[i])]+list2[len(money)-i-1]
        else:
            if money2[-1] != "零":
                money2 += "零"
    if money2[-1] == "零":
        print(money2[0:len(money2)-1]+"圆整")
    else:
        print(money2+"整")
    
    展开全文
  • 本文实例大家分享了python实现人民币大写转换的具体代码,供大家参考,具体内容如下 #!/usr/bin/python # -*- coding:utf-8 -*- # ********* 转换方法介绍 ********* # 将需要转换数字从右向左,每4位分成一个...
  • Python将阿拉伯数字转化中文大写,关键点在于中间空多个0的问题。这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小数部分,再对整数部分按照仟、万、亿、兆分位拆分为四个字符串组成的List,每个...

    Python将阿拉伯数字转化为中文大写,关键点在于中间空多个0的问题。

    这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小数部分,再对整数部分按照仟、万、亿、兆分位拆分为四个字符串组成的List,每个字符串最多4个字符,然后对每个分位的字符串用大写函数转换成大写,最后合并。如此的操作方法,缩减了问题,处理起来就容易多了。

    代码:

    复制代码 代码示例:

    #!/usr/bin/env python

    #edit: www.51itstudy.com

    #

    # -*- coding: utf-8 -*-

    '''

    #算法说明:要求字符串输入,现将字符串差费为整数部分和小数部分生成list[整数部分,小数部分]

    #将整数部分拆分为:[亿,万,仟]三组字符串组成的List:['0000','0000','0000'](根据实际输入生成阶梯List)

    #例如:600190000010.70整数部分拆分为:['600','1900','0010']

    #然后对list中每个字符串分组进行大写化再合并

    #最后处理小数部分的大写化

    '''

    class cnumber:

    cdict={}

    gdict={}

    xdict={}

    def __init__(self):

    self.cdict={1:u'',2:u'拾',3:u'佰',4:u'仟'}

    self.xdict={1:u'元',2:u'万',3:u'亿',4:u'兆'} #数字标识符

    self.gdict={0:u'零',1:u'壹',2:u'贰',3:u'叁',4:u'肆',5:u'伍',6:u'陆',7:u'柒',8:u'捌',9:u'玖'}

    def csplit(self,cdata): #拆分函数,将整数字符串拆分成[亿,万,仟]的list

    g=len(cdata)%4

    csdata=[]

    lx=len(cdata)-1

    if g>0:

    csdata.append(cdata[0:g])

    k=g

    while k<=lx:

    csdata.append(cdata[k:k+4])

    k+=4

    return csdata

    def cschange(self,cki): #对[亿,万,仟]的list中每个字符串分组进行大写化再合并

    lenki=len(cki)

    i=0

    lk=lenki

    chk=u''

    for i in range(lenki):

    if int(cki[i])==0:

    if i

    if int(cki[i+1])!=0:

    chk=chk+self.gdict[int(cki[i])]

    else:

    chk=chk+self.gdict[int(cki[i])]+self.cdict[lk]

    lk-=1

    return chk

    def cwchange(self,data):

    cdata=str(data).split('.')

    cki=cdata[0]

    if len(cdata)==1:

    i=0

    chk=u''

    cski=self.csplit(cki) #分解字符数组[亿,万,仟]三组List:['0000','0000','0000']

    ikl=len(cski) #获取拆分后的List长度

    #大写合并

    for i in range(ikl):

    if self.cschange(cski[i])=='': #有可能一个字符串全是0的情况

    chk=chk+self.cschange(cski[i]) #此时不需要将数字标识符引入

    else:

    chk=chk+self.cschange(cski[i])+self.xdict[ikl-i] #合并:前字符串大写+当前字符串大写+标识符

    chk=chk+u'整'

    else:

    i=0

    chk=u''

    cski=self.csplit(cki) #分解字符数组[亿,万,仟]三组List:['0000','0000','0000']

    ikl=len(cski) #获取拆分后的List长度

    #大写合并

    for i in range(ikl):

    if self.cschange(cski[i])=='': #有可能一个字符串全是0的情况

    chk=chk+self.cschange(cski[i]) #此时不需要将数字标识符引入

    else:

    chk=chk+self.cschange(cski[i])+self.xdict[ikl-i] #合并:前字符串大写+当前字符串大写+标识符

    #处理小数部分

    ckj=cdata[1]

    lenkj=len(ckj)

    if lenkj==1: #若小数只有1位

    if int(ckj[0])==0:

    chk=chk+u'整'

    else:

    chk=chk+self.gdict[int(ckj[0])]+u'角整'

    else: #若小数有两位的四种情况

    if int(ckj[0])==0 and int(ckj[1])!=0:

    chk=chk+u'零'+self.gdict[int(ckj[1])]+u'分'

    elif int(ckj[0])==0 and int(ckj[1])==0:

    chk=chk+u'整'

    elif int(ckj[0])!=0 and int(ckj[1])!=0:

    chk=chk+self.gdict[int(ckj[0])]+u'角'+self.gdict[int(ckj[1])]+u'分'

    else:

    chk=chk+self.gdict[int(ckj[0])]+u'角整'

    return chk

    if __name__=='__main__':

    pt=cnumber()

    print pt.cwchange('123410505632.09').encode('utf-8')

    展开全文
  • 利用Python将阿拉伯数字转化中文大写,其实最麻烦的地方就是中间空多个0的问题,这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小数部分,再对整数部分按照仟、万、亿、兆分位拆分为四个字符串组成...
  • 本文实例讲述了Python实现中文数字转换为阿拉伯数字的方法。分享给大家供大家参考,具体如下: 一、需求 今天写了三千二百行代码。 今天写了3200行代码。 两行意思相同,只是表达方式不太能够,统一掉。 二、原理 ...
  • python数字转换成中文大写

    千次阅读 2021-03-24 21:05:00
    数字转换成中文大写,例如:1->一 ,25->二十五,49->四十九 Parameters ---------- intnumber : TYPE DESCRIPTION. Returns ------- TYPE DESCRIPTION. ''' numberList = ['零','一','二.
  • 题目 python练习的一个小实验, 题目如下图: ...3. 整数部分可以分割以 4 位数字为一组的列表来进行转换处理,这样便于进行 (兆,亿,万,圆)。的单位处理 4. 首先将分割的 4 位数字一组的数据进行转化处理,便...
  • 主要介绍了Python实现把数字转换成中文,一般用于数字金额中文大写金额,即将阿拉伯数字转换为大写的中文,需要的朋友可以参考下
  • 很简单。python本身有个抽象语法树库专门解析源码。加上astor库导出到文件就可以。...把它们都转换为ascii十进制来判断,a最小97,z最大122。例如:raw_str="test_1"str_to_ascii=[chr(ord(single_st...
  • python 数字转换为汉字大写

    千次阅读 2020-08-25 09:21:14
    在会计的时候,用到将数字转换为大写,也就是讲数字转为汉字 class cnumber: cdict = {} gdict = {} xdict = {} def __init__(self): self.cdict = {1: u'', 2: u'拾', 3: u'佰', 4: u'仟'} self.xdict = {1:...
  • 大写数字转换为阿拉伯数字
  • /usr/bin/python #-*- encoding: utf-8 -*- import types class NotIntegerError(Exception): pass class OutOfRangeError(Exception): pass _MAPPING = (u’零’, u’一’, u’二’, u’三’, u’四’, u’五’, u...
  • python 转换数字为中文的大写

    千次阅读 2016-12-02 11:51:46
    python 转换数字为中文的大写 python 转换为中文的大写数字,比较简单,有需要的同学可以拿去使用,没做角和分 可以自己修改 下面代码 #-*-coding:utf-8 -*- import logging import urllib2 # urllib2.request_...
  • 壹仟万壹仟贰佰叁拾肆圆 壹仟万圆 壹仟万零肆圆 壹仟万零叁拾圆 壹仟万零贰佰圆 壹仟万壹仟圆 壹仟零伍万圆 壹佰贰拾亿零壹万零壹圆 壹仟肆佰零玖圆伍角 ———————————————— 版权声明:本文CSDN博主...
  • Python实现将数字转换为大写中文

    千次阅读 2020-07-09 18:28:25
    实现代码一 ...import re from decimal import Decimal, ROUND_HALF_UP ZH_HANS_MAP = dict(zip(range(10), "零壹贰叁肆伍陆柒捌玖")) def verbose_price(cost): cost = Decimal(cost).quantize(Decimal('0.00'), ...
  • def digital_to_chinese(digital):str_digital = str(digital)chinese = {'1': '壹', '2': '贰', '3': '叁', '4': '肆', '5': '伍', '6': '陆', '7': '柒', '8': '捌', '9': '玖', '0': '零'}chinese2 = ['拾', '佰'...
  • Python 数字转中文大写

    2020-10-23 17:31:30
    本人找了很多文章,对于数字转中文大写的都没有很好的支持,尤其是单位不同的时候,于是找了一组代码稍加修改,运行流畅,输出准确。放上来算是给社区一点小贡献。转载记得加上这个链接哦。有问题欢迎留言和私信。有...
  • Python编写数字转换成中文大写

    千次阅读 2021-09-15 22:33:34
    问题描述:输入一串数字金额,然后打印出它的中文大写。 利用列表下标进行转换。 list1 = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖', '拾'] list2 = ['圆', '拾', '佰', '仟', '萬'] money ...
  • Python 转换金额大写为数字小写 def toInt(value): isum = 0 nums = {'零': 0, '壹': 1, '贰':2, '叁': 3, '肆': 4, '伍': 5, '陆': 6, '柒': 7, '捌': 8, '玖':9} dw = {'拾': 3, '元': 2, '佰': 4, '仟': 5, '...
  • Python数字转换大写字母

    千次阅读 2019-09-27 20:44:19
    一、功能描述 实现类似 Excel 中的列序号功能。... factor - 1 : 商为有效值时起始数 1 而余数是 0 return modChar 三、结果   转载于:https://www.cnblogs.com/Lieber/p/7306002.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,974
精华内容 22,389
关键字:

python数字转换为大写

友情链接: License.rar