仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 383|回复: 6
打印 上一主题 下一主题

[CentOS(社区)] 来一发Python将阿拉伯数字转化为中文年夜写

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-14 21:05:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
小知识:CentOS是企业Linux发行版领头羊RedHatEnterpriseLinux(以下称之为RHEL)的源代码再编译版本。
应用Python将阿拉伯数字转化为中文年夜写,其实最费事的处所就是中央空多个0的成绩,这类情形下,采取拆分轨则,将一个年夜数字,先拆分红整数部门和小数部门,再对整数部门依照仟、万、亿、兆分位拆分为四个字符串构成的List,每一个字符串最多4个字符,然后对每一个分位的字符串用年夜写函数转换成年夜写,最初归并,如许等于缩减了成绩,处置就绝对简略了。
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em]15

[size=1em]16

[size=1em]17

[size=1em]18

[size=1em]19

[size=1em]20

[size=1em]21

[size=1em]22

[size=1em]23

[size=1em]24

[size=1em]25

[size=1em]26

[size=1em]27

[size=1em]28

[size=1em]29

[size=1em]30

[size=1em]31

[size=1em]32

[size=1em]33

[size=1em]34

[size=1em]35

[size=1em]36

[size=1em]37

[size=1em]38

[size=1em]39

[size=1em]40

[size=1em]41

[size=1em]42

[size=1em]43

[size=1em]44

[size=1em]45

[size=1em]46

[size=1em]47

[size=1em]48

[size=1em]49

[size=1em]50

[size=1em]51

[size=1em]52

[size=1em]53

[size=1em]54

[size=1em]55

[size=1em]56

[size=1em]57

[size=1em]58

[size=1em]59

[size=1em]60

[size=1em]61

[size=1em]62

[size=1em]63

[size=1em]64

[size=1em]65

[size=1em]66

[size=1em]67

[size=1em]68

[size=1em]69

[size=1em]70

[size=1em]71

[size=1em]72

[size=1em]73

[size=1em]74

[size=1em]75

[size=1em]76

[size=1em]77

[size=1em]78

[size=1em]79

[size=1em]80

[size=1em]81

[size=1em]82

[size=1em]83

[size=1em]84

[size=1em]85

[size=1em]86

[size=1em]87

[size=1em]88

[size=1em]89

[size=1em]90

[size=1em]91

[size=1em][size=1em]#!/usr/bin/envpython
[size=1em]#-*-coding:utf-8-*-
[size=1em]
[size=1em]#算法解释:请求字符串输出,现将字符串差费为整数部门和小数部门生成list[整数部门,小数部门]
[size=1em]#将整数部门拆分为:[亿,万,仟]三组字符串构成的List:[0000,0000,0000](依据现实输出生成阶梯List)
[size=1em]#例如:600190000010.70整数部门拆分为:[600,1900,0010]
[size=1em]#然后对list中每一个字符串分组停止年夜写化再归并
[size=1em]#最初处置小数部门的年夜写化
[size=1em]
[size=1em]classcnumber:
[size=1em]cdict={}
[size=1em]gdict={}
[size=1em]xdict={}
[size=1em]def__init__(self):
[size=1em]self.cdict={1:u,2:u拾,3:u佰,4:u仟}
[size=1em]self.xdict={1:u元,2:u万,3:u亿,4:u兆}#数字标识符
[size=1em]self.gdict={0:u零,1:u壹,2:u贰,3:u叁,4:u肆,5:u伍,6:u陆,7:u柒,8:u捌,9:u玖}
[size=1em]defcsplit(self,cdata):#拆分函数,将整数字符串拆分红[亿,万,仟]的list
[size=1em]g=len(cdata)%4
[size=1em]csdata=[]
[size=1em]lx=len(cdata)-1
[size=1em]ifg>0:
[size=1em]csdata.append(cdata[0:g])
[size=1em]k=g
[size=1em]whilek<=lx:
[size=1em]csdata.append(cdata[k:k+4])
[size=1em]k+=4
[size=1em]returncsdata
[size=1em]
[size=1em]defcschange(self,cki):#对[亿,万,仟]的list中每一个字符串分组停止年夜写化再归并
[size=1em]lenki=len(cki)
[size=1em]i=0
[size=1em]lk=lenki
[size=1em]chk=u
[size=1em]foriinrange(lenki):
[size=1em]ifint(cki)==0:
[size=1em]ifi<lenki-1:
[size=1em]ifint(cki[i+1])!=0:
[size=1em]chk=chk+self.gdict[int(cki)]
[size=1em]else:
[size=1em]chk=chk+self.gdict[int(cki)]+self.cdict[lk]
[size=1em]lk-=1
[size=1em]returnchk
[size=1em]
[size=1em]defcwchange(self,data):
[size=1em]cdata=str(data).split(.)
[size=1em]cki=cdata[0]
[size=1em]iflen(cdata)==1:
[size=1em]i=0
[size=1em]chk=u
[size=1em]cski=self.csplit(cki)#分化字符数组[亿,万,仟]三组List:[0000,0000,0000]
[size=1em]ikl=len(cski)#获得拆分后的List长度
[size=1em]#年夜写归并
[size=1em]foriinrange(ikl):
[size=1em]ifself.cschange(cski)==:#有能够一个字符串满是0的情形
[size=1em]chk=chk+self.cschange(cski)#此时不须要将数字标识符引入
[size=1em]else:
[size=1em]chk=chk+self.cschange(cski)+self.xdict[ikl-i]#归并:前字符串年夜写+以后字符串年夜写+标识符
[size=1em]chk=chk+u整
[size=1em]else:
[size=1em]i=0
[size=1em]chk=u
[size=1em]cski=self.csplit(cki)#分化字符数组[亿,万,仟]三组List:[0000,0000,0000]
[size=1em]ikl=len(cski)#获得拆分后的List长度
[size=1em]#年夜写归并
[size=1em]foriinrange(ikl):
[size=1em]ifself.cschange(cski)==:#有能够一个字符串满是0的情形
[size=1em]chk=chk+self.cschange(cski)#此时不须要将数字标识符引入
[size=1em]else:
[size=1em]chk=chk+self.cschange(cski)+self.xdict[ikl-i]#归并:前字符串年夜写+以后字符串年夜写+标识符
[size=1em]#处置小数部门
[size=1em]ckj=cdata[1]
[size=1em]lenkj=len(ckj)
[size=1em]iflenkj==1:#若小数只要1位
[size=1em]ifint(ckj[0])==0:
[size=1em]chk=chk+u整
[size=1em]else:
[size=1em]chk=chk+self.gdict[int(ckj[0])]+u角整
[size=1em]else:#若小数有两位的四种情形
[size=1em]ifint(ckj[0])==0andint(ckj[1])!=0:
[size=1em]chk=chk+u零+self.gdict[int(ckj[1])]+u分
[size=1em]elifint(ckj[0])==0andint(ckj[1])==0:
[size=1em]chk=chk+u整
[size=1em]elifint(ckj[0])!=0andint(ckj[1])!=0:
[size=1em]chk=chk+self.gdict[int(ckj[0])]+u角+self.gdict[int(ckj[1])]+u分
[size=1em]else:
[size=1em]chk=chk+self.gdict[int(ckj[0])]+u角整
[size=1em]returnchk
[size=1em]if__name__==__main__:
[size=1em]pt=cnumber()
[size=1em]printpt.cwchange(123410505632.09).encode(utf-8)



本文参照网上的一些写法做了一些修改,应用起来加倍严谨。
小知识:CentOS在服务器提供商、中小型公司中装机量几乎是最大的Linux发行版。
沙发
 楼主| 发表于 2015-1-16 23:45:34 | 只看该作者

来一发Python将阿拉伯数字转化为中文年夜写

下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。
简单生活 该用户已被删除
板凳
发表于 2015-1-24 12:07:20 | 只看该作者
有疑问前,知识学习前,先用搜索。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-1 14:26:07 | 只看该作者
其中不乏很多IT精英的心血。我们学透以后更可以做成自己的OS!?
透明 该用户已被删除
5#
发表于 2015-2-22 00:52:19 | 只看该作者
一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。?
精灵巫婆 该用户已被删除
6#
发表于 2015-3-14 07:39:47 | 只看该作者
Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-21 03:07:12 | 只看该作者
眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-11 19:32

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表