把数字序号转换成汉字序号

我们在写公文的时候,常常会用到汉字序号,如第二章、第一百零八条等。那么如何用程序来自动编号呢?我们首先得掌握把数字转换成汉字序号的方法。

其实仔细研究一下汉字序号的规率,其实百位和个位的算法都很简单。0的话没有,其他几位都是有几就是几,转换非常简单。转换代码如下:

HZ='零一二三四五六七八九'
s=HZ[bw]+"百" if bw else ""
s=HZ[gw] if gw else ""

最复杂的就是十位的转换,主要有以下几个规则:

  1. 十位不是0时:
    1. 百位为0且十位是1时,返回"十"
    2. 否则返回:HZ[sw]+"十"
  2. 十位是0时:
    1. 百位不是0且个位不是0时:返回”零“
    2. 否则返回空

按上面的规则,完整的转换程序如下 :

HZ='零一二三四五六七八九'
def transhz(no):
    bw,sw,gw=(int(x)for x in '%03d'%no)
    if sw:
        r="十" if not bw and sw==1 else HZ[sw]+"十"
    else:
        r= "零" if bw and gw else ""
    return f'{HZ[bw]+"百" if bw else ""}{r}{HZ[gw] if gw else ""}' 

推荐阅读更多精彩内容