python中将阿拉伯数字转换成中文的实现代码


Posted in Python onMay 19, 2011
#!/usr/bin/python 
#-*- encoding: utf-8 -*- 
import types 
class NotIntegerError(Exception): 
pass 
class OutOfRangeError(Exception): 
pass 
_MAPPING = (u'零', u'一', u'二', u'三', u'四', u'五', u'六', u'七', u'八', u'九', ) 
_P0 = (u'', u'十', u'百', u'千', ) 
_S4, _S8, _S16 = 10 ** 4 , 10 ** 8, 10 ** 16 
_MIN, _MAX = 0, 9999999999999999 
def _to_chinese4(num): 
'''''转换[0, 10000)之间的阿拉伯数字 
''' 
assert(0 <= num and num < _S4) 
if num < 10: 
return _MAPPING[num] 
else: 
lst = [ ] 
while num >= 10: 
lst.append(num % 10) 
num = num / 10 
lst.append(num) 
c = len(lst) # 位数 
result = u'' 
for idx, val in enumerate(lst): 
if val != 0: 
result += _P0[idx] + _MAPPING[val] 
if idx < c - 1 and lst[idx + 1] == 0: 
result += u'零' 
return result[::-1].replace(u'一十', u'十') 
def _to_chinese8(num): 
assert(num < _S8) 
to4 = _to_chinese4 
if num < _S4: 
return to4(num) 
else: 
mod = _S4 
high, low = num / mod, num % mod 
if low == 0: 
return to4(high) + u'万' 
else: 
if low < _S4 / 10: 
return to4(high) + u'万零' + to4(low) 
else: 
return to4(high) + u'万' + to4(low) 
def _to_chinese16(num): 
assert(num < _S16) 
to8 = _to_chinese8 
mod = _S8 
high, low = num / mod, num % mod 
if low == 0: 
return to8(high) + u'亿' 
else: 
if low < _S8 / 10: 
return to8(high) + u'亿零' + to8(low) 
else: 
return to8(high) + u'亿' + to8(low) 
def to_chinese(num): 
if type(num) != types.IntType and type(num) != types.LongType: 
raise NotIntegerError(u'%s is not a integer.' % num) 
if num < _MIN or num > _MAX: 
raise OutOfRangeError(u'%d out of range[%d, %d)' % (num, _MIN, _MAX)) 
if num < _S4: 
return _to_chinese4(num) 
elif num < _S8: 
return _to_chinese8(num) 
else: 
return _to_chinese16(num) 
if __name__ == '__main__': 
print to_chinese(9000)

把金额小写转换成大写的Python代码
功能将小于十万亿元的小写金额转换为大写
代码
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)
Python 相关文章推荐
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
基于Python实现对PDF文件的OCR识别
Aug 05 Python
python实现关键词提取的示例讲解
Apr 28 Python
浅谈python实现Google翻译PDF,解决换行的问题
Nov 28 Python
python版本五子棋的实现代码
Dec 11 Python
python多线程抽象编程模型详解
Mar 20 Python
PyQt5组件读取参数的实例
Jun 25 Python
django+tornado实现实时查看远程日志的方法
Aug 12 Python
解决python3 安装不了PIL的问题
Aug 16 Python
Python urllib.request对象案例解析
May 11 Python
如何在mac下配置python虚拟环境
Jul 06 Python
python访问纯真IP数据库的代码
May 19 #Python
Python模块学习 re 正则表达式
May 19 #Python
PYTHON正则表达式 re模块使用说明
May 19 #Python
python 随机数生成的代码的详细分析
May 15 #Python
python 生成不重复的随机数的代码
May 15 #Python
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 #Python
Python中删除文件的程序代码
Mar 13 #Python
You might like
php实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
canvas时钟效果
2017/02/16 Javascript
js实现楼层导航功能
2017/02/23 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
用python代码做configure文件
2014/07/20 Python
Python通过select实现异步IO的方法
2015/06/04 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
如何写出好的Java代码
2014/04/25 面试题
涉外文秘个人求职的自我评价
2013/10/07 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
防沙治沙典型材料
2014/05/07 职场文书
运动会加油口号
2014/06/07 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
MYSQL如何查看操作日志详解
2022/05/30 MySQL