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代码嵌入C++程序进行编写的实例
Jul 31 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
浅谈python中requests模块导入的问题
May 18 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
Python 实现微信防撤回功能
Apr 29 Python
使用Python制作表情包实现换脸功能
Jul 19 Python
Python Django 前后端分离 API的方法
Aug 28 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
详解使用python爬取抖音app视频(appium可以操控手机)
Jan 26 Python
python解包概念及实例
Feb 17 Python
python爬取豆瓣电影排行榜(requests)的示例代码
Feb 18 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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
详解vue-resource promise兼容性问题
2017/06/20 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
React Native验证码倒计时工具类分享
2017/10/24 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
Python进阶-函数默认参数(详解)
2017/05/18 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
Python+unittest+DDT实现数据驱动测试
2020/11/30 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
医学院学生的自我评价分享
2013/11/19 职场文书
中学生运动会入场词
2014/02/12 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
停课通知书
2015/04/24 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
vue实现移动端div拖动效果
2022/03/03 Vue.js