本文操作环境:
windows7系统,DELL G3电脑,python3.5版
python实现将阿拉伯数字转换成中文
第一种转换方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
1 - - > 一 12 - - > 一二 def num_to_char(num): """数字转中文""" num = str (num) new_str = "" num_dict = { "0" :u "零" , "1" :u "一" , "2" :u "二" , "3" :u "三" , "4" :u "四" , "5" :u "五" , "6" :u "六" , "7" :u "七" , "8" :u "八" , "9" :u "九" } listnum = list (num) # print(listnum) shu = [] for i in listnum: # print(num_dict[i]) shu.append(num_dict[i]) new_str = "".join(shu) # print(new_str) return new_str |
第二种转换方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
1 - - > 一 12 - - > 十二 23 - - > 二十三 _MAPPING = (u '零' , u '一' , u '二' , u '三' , u '四' , u '五' , u '六' , u '七' , u '八' , u '九' , u '十' , u '十一' , u '十二' , u '十三' , u '十四' , u '十五' , u '十六' , u '十七' ,u '十八' , u '十九' ) _P0 = (u' ', u' 十 ', u' 百 ', u' 千',) _S4 = 10 * * 4 def _to_chinese4(num): assert ( 0 < = num and num < _S4) if num < 20 : 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): val = int (val) if val ! = 0 : result + = _P0[idx] + _MAPPING[val] if idx < c - 1 and lst[idx + 1 ] = = 0 : result + = u '零' return result[:: - 1 ] |
实例扩展:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#!/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数字转对应中文的方法总结的详细内容,更多关于python数字怎么转对应中文的资料请关注服务器之家其它相关文章!
原文链接:https://www.php.cn/python-tutorials-475661.html