数字转中文读写....(参考别人后修改)

# coding=gbk
import re
import math

chinese_digits = (u ' ',u ' ',u ' ',u ' ',u ' ',u ' ',u ' ',u ' ',u ' ',u ' ')
chinese_jinzhi = (u ' ',u '',u ' ',u ' ',u ' ',u '')
wanindex = 5
def formatdigitwithjinzhi(digit,jinzhi):
     if(digit==0):
         return chinese_digits[digit]
     else:
         return chinese_digits[digit] + jinzhi

def formatcapchnumber(chnumber):
    s = chnumber
    s = s.replace(u " ",u " ").replace(u " ",u " ").replace(u " ",u " ").replace(u " ",u " ").replace(u " ",u " ").replace(u " ",u " ").replace(u " ",u " ").replace(u " ",u " ").replace(u " ",u " ")
    s = s.replace(u " ",u " ").replace(u " ",u " ").replace(u " ",u " ")
     print s

def format4digits(digits,saveonezeroathead = False):
    digits =  ' %04d ' % digits
    s =  ''
    jinzhi = -4
     for digit  in digits:
        numeric_digit= int(digit)
        s+=formatdigitwithjinzhi(numeric_digit,chinese_jinzhi[jinzhi])
        jinzhi+=1
     if(saveonezeroathead):
        s = re.sub(r " ^ " + u " " +  " {1,} ",u " ",s)
     else:
        s = re.sub(r " ^ " + u " " +  " + ", "",s)
        s = re.sub(r " ^ " + u " 一十 ",u " ",s)
    s = re.sub(r "" + u " " +  " +$ ", "",s)
    s = re.sub(r "" + u " " +  " {2,} ",u " ",s)
     return s

def genejinzhi(wanindex):
    s =  ''
     if(wanindex % 2==1):
        s+=u " "
    yicount = wanindex / 2
     for i  in range(yicount):
        s+=u " 亿 "
     return s


def render(arg):
    source = re.sub( " \D ", "",arg)
    source_list = []
     for i  in range(int(math.ceil(len(source)/4.0))):
         if(i==0):
            source_list.insert(0,int(source[-4:]))
         else:
            source_list.insert(0,int(source[((-i-1)*4):(-i*4)]))
    result =  ""
    oldresult =  ""    
    firstpartdanweiindex = wanindex - len(source_list) + 2
    partindex = 0
     for part  in source_list:
        oldresult = result
         if(len(source_list)>1  and partindex==(len(source_list)-1)):
            result += format4digits(part,saveonezeroathead = True)
         else:
            result += format4digits(part)
         if(oldresult!=result):
            result += genejinzhi(len(source_list) - partindex - 1)
            partindex +=1
     print result
    formatcapchnumber(result)

while(True):
    arg = raw_input( " \n(q to quit)\n>>> ")
     if(arg== " quit "  or arg== " q "  or arg== " exit "):
         break
     else:
        render(arg)

转载于:https://www.cnblogs.com/fenix/archive/2010/02/05/2380485.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值