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抓取百度查询结果的方法
Jul 08 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
浅谈Python中的私有变量
Feb 28 Python
使用python 3实现发送邮件功能
Jun 15 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
Python实现多进程的四种方式
Feb 22 Python
Python实现最常见加密方式详解
Jul 13 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
Laravel框架表单验证格式化输出的方法
Sep 25 Python
Python pip安装模块提示错误解决方案
May 22 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 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
浅析PHP 按位与或 (^ 、&amp;)
2013/06/21 PHP
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
JS中用三种方式实现导航菜单中的二级下拉菜单
2016/10/31 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
微信小程序实现人脸识别
2018/05/25 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
js实现无缝轮播图插件封装
2020/07/31 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
Python 多线程实例详解
2017/03/25 Python
Python优先队列实现方法示例
2017/09/21 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
开放系统互连参考模型
2016/06/29 面试题
会走路的树教学反思
2014/02/20 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
在Python中如何使用yield
2021/06/07 Python
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python