python将人民币转换大写的脚本代码

代码如下:

def Num2MoneyFormat( change_number ):
    """
    .转换数字为大写货币格式( format_word.__len__() - 3 + 2位小数 )
    change_number 支持 float, int, long, string
    """
    format_word = ["分", "角", "元",
               "拾","百","千","万",
               "拾","百","千","亿",
               "拾","百","千","万",
               "拾","百","千","兆"]

format_num = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"]
    if type( change_number ) == str:
        # - 如果是字符串,先尝试转换成float或int.
        if '.' in change_number:
            try:    change_number = float( change_number )
            except: raise ValueError, '%s   can\'t change'%change_number
        else:
            try:    change_number = int( change_number )
            except: raise ValueError, '%s   can\'t change'%change_number

if type( change_number ) == float:
        real_numbers = []
        for i in range( len( format_word ) - 3, -3, -1 ):
            if change_number >= 10 ** i or i < 1:
                real_numbers.append( int( round( change_number/( 10**i ), 2)%10 ) )

elif isinstance( change_number, (int, long) ):
        real_numbers = [ int( i ) for i in str( change_number ) + '00' ]

else:
        raise ValueError, '%s   can\'t change'%change_number

zflag = 0                       #标记连续0次数,以删除万字,或适时插入零字
    start = len(real_numbers) - 3
    change_words = []
    for i in range(start, -3, -1):  #使i对应实际位数,负数为角分
        if 0 <> real_numbers[start-i] or len(change_words) == 0:
            if zflag:
                change_words.append(format_num[0])
                zflag = 0
            change_words.append( format_num[ real_numbers[ start - i ] ] )
            change_words.append(format_word[i+2])

elif 0 == i or (0 == i%4 and zflag < 3):    #控制 万/元
            change_words.append(format_word[i+2])
            zflag = 0
        else:
            zflag += 1

if change_words[-1] not in ( format_word[0], format_word[1]):
        # - 最后两位非"角,分"则补"整"
        change_words.append("整")

return ''.join(change_words)

Python 把金额小写转换成大写2

功能将小于十万亿元的小写金额转换为大写


代码如下:

  def IIf( b, s1, s2):
  if b:
    return s1
  else:
    return s2
def num2chn(nin=None):
    cs =
('零','壹','贰','叁','肆','伍','陆','柒','捌','玖','◇','分','角','圆','拾','佰','仟',
'万','拾','佰','仟','亿','拾','佰','仟','万')
    st = ''; st1=''
    s = '%0.2f' % (nin)    
    sln =len(s)
    if sln >; 15: return None
    fg = (nin<1)
    for i in range(0, sln-3):
        ns = ord(s[sln-i-4]) - ord('0')
        st=IIf((ns==0)and(fg or (i==8)or(i==4)or(i==0)), '', cs[ns])
      + IIf((ns==0)and((i<>;8)and(i<>;4)and(i<>;0)or fg
and(i==0)),'', cs[i+13])
      + st
        fg = (ns==0)
    fg = False
    for i in [1,2]:
        ns = ord(s[sln-i]) - ord('0')
        st1 = IIf((ns==0)and((i==1)or(i==2)and(fg or (nin<1))), '', cs[ns])
       + IIf((ns>;0), cs[i+10], IIf((i==2) or fg, '', '整'))
       + st1
        fg = (ns==0)
    st.replace('亿万','万')
    return IIf( nin==0, '零', st + st1)
if __name__ == '__main__':
  num = 12340.1
  print num
  print num2chn(num)

(0)

相关推荐

  • python实现可将字符转换成大写的tcp服务器实例

    本文实例讲述了python实现可将字符转换成大写的tcp服务器.分享给大家供大家参考.具体分析如下: 下面的python代码执行后通过tcp监控8081端口,用于将用户发送的请求字符串转换成大写后返回,如果用户发送的是end,则中断连接 import SocketServer import netstring class MyRequestHandler(SocketServer.BaseRequestHandler): def handle(self): print "From:",

  • python strip()函数 介绍

    函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm)       删除s字符串中开头处,位于 rm删除序列的字符 s.rstrip(rm)      删除s字符串中结尾处,位于 rm删除序列的字符 注意: 1. 当rm为空时,默认删除空白符(包括'\n', '\r',  '\t',  ' ') 例如: 复制代码 代码如下: >>> a = '     123'>>

  • Python中用于检查英文字母大写的isupper()方法

    isupper()方法检查字符串的所有基于大小写的字符(字母)是否是大写. 语法 以下是isupper()方法的语法: str.isupper() 参数 NA 返回值 如果字符串中的所有字符是大写字母并且至少有一个可大小写字符此方法返回true,否则返回false. 例子 下面的例子显示了isupper()方法的使用. #!/usr/bin/python str = "THIS IS STRING EXAMPLE....WOW!!!"; print str.isupper(); str

  • Python实现将不规范的英文名字首字母大写

    例如 输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']. 方法一 def wgw(x): return [x[0].upper(),x[1:].lower()] map(wgw,['adam','LISA','barT']) 方法二 def wgw1(x): return x.capitalize() map(wgw1,['adam','LISA','barT']) 方法三 map(lambda x:x.capitalize(),['

  • python获取一组汉字拼音首字母的方法

    本文实例讲述了python获取一组汉字拼音首字母的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 -*- def multi_get_letter(str_input): if isinstance(str_input, unicode): unicode_str = str_input else: try: unicode_str = str_input.decode('utf8') except: try:

  • 浅析Python中将单词首字母大写的capitalize()方法

    capitalize()方法返回字符串的一个副本,只有它的第一个字母大写.对于8位的字符串,这个方法与语言环境相关. 语法 以下是capitalize()方法的语法: str.capitalize() 参数 NA 返回值 此方法返回的字符串只有它的第一个字符大写的副本. 例子 下面的示例演示了capitalize方法的使用. #!/usr/bin/python str = "this is string example....wow!!!"; print "str.capit

  • python中合并两个文本文件并按照姓名首字母排序的例子

    前段时间前在网上看到一段面试题,要求如下: employee文件中记录了工号和姓名 复制代码 代码如下: cat employee.txt: 100 Jason Smith 200 John Doe 300 Sanjay Gupta 400 Ashok Sharma bonus文件中记录工号和工资 复制代码 代码如下: cat bonus.txt: 100 $5,000 200 $500 300 $3,000 400 $1,250 要求把两个文件合并并输出如下, 处理结果: 复制代码 代码如下:

  • Python 列表(List)操作方法详解

    列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型.列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推.Python有6个序列的内置类型,但最常见的是列表和元组.序列都可以进行的操作包括索引,切片,加,乘,检查成员.此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法. 一.创建一个列表只要把逗号分隔的不同的数据项使用方括号括起来即可.如下所示: 复制代码 代码如下: list1

  • python 中文乱码问题深入分析

    在本文中,以'哈'来解释作示例解释所有的问题,"哈"的各种编码如下: 1. UNICODE (UTF8-16),C854: 2. UTF-8,E59388: 3. GBK,B9FE. 一.python中的str和unicode 一直以来,python中的中文编码就是一个极为头大的问题,经常抛出编码转换的异常,python中的str和unicode到底是一个什么东西呢? 在python中提到unicode,一般指的是unicode对象,例如'哈哈'的unicode对象为 u'\u54c8

  • Python入门教程 超详细1小时学会Python

    为什么使用Python    假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是bash而Windows是批处理脚本).例如,在Windows上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结果中进行

随机推荐