在处理小说文本中,有时会遇到把第一章转化为第1章,把第二十一章转化为第21章...也就是把中文序号转化为阿拉伯数字序号的情形。
这种情况如何操作呢?有人在Emeditor群里给出宏处理的方法,但是操作起来有点儿繁琐,不如用Python来的方便和快捷,今天我们来分享两种中文汉字序号转化为阿拉伯数字序号的方法。
此种方法是首先定义一个函数,然后把从零至十转化为对应数字后再对其中的百进行判断,可以实现从零至九百九十九的汉字序号转化。由于一般情况下,章数达不到一千章,所以基本上可以用。
第一种方法的局限性就是不能上千,一上千就会不支持。如果你想使用更为简单的方法,可以使用python中现成的cn2an这个强大的㔹化包,这样就不用自己去造轮子来耽误时间了。
首先是在cmd下安装这个包:
pip install cn2an -U
然后就是导入这个包:
import cn2an
这个包的功能非常强,可以实现汉字序号和阿拉伯序号之间的互转。同时,更为强大的是,它支持小数、负数、智能转化等多种模式。
# 在 strict 模式(默认)下,只有严格符合数字拼写的才可以进行转化
output = cn2an.cn2an("一百二十三")
# 或者
output = cn2an.cn2an("一百二十三", "strict")
# output:
# 123
# 在 normal 模式下,可以将 一二三 进行转化
output = cn2an.cn2an("一二三", "normal")
# output:
# 123
# 在 smart 模式下,可以将混合拼写的 1百23 进行转化
output = cn2an.cn2an("1百23", "smart")
# output:
# 123
# 以上三种模式均支持负数
output = cn2an.cn2an("负一百二十三", "strict")
# output:
# -123
# 以上三种模式均支持小数
output = cn2an.cn2an("一点二三", "strict")
# output:
# 1.23
不仅如此,这个包还很智能,可以支持把句子中的中文数字转化为阿拉伯数字。
如果是阿拉伯数字转中文数字,方法与上面的差不多,只是这次要用到cn2an.an2cn()这个方法了。下面仅举几例:如下面代码所示:
output = cn2an.an2cn("123", "low")
# output:
# 一百二十三
# 在 up 模式下,数字转化为大写的中文数字
output = cn2an.an2cn("123", "up")
# output:
# 壹佰贰拾叁
# 在 rmb 模式下,数字转化为人民币专用的描述
output = cn2an.an2cn("123", "rmb")
# output:
# 壹佰贰拾叁元整
更多的使用方法,大家可以参照:
cn2anpypi.org/project/cn2an/
1. Python的最大优势就是它的开放性。同一个问题,如果得到解决,生成了模块,就可以直接拿来调用。很多其它的语言都是封闭性的,解决同样的问题需要从头开始,非常浪费时间。
2. 遇到同样的问题,可以在网上找一下看看有没有前人已经制作好的Python包,比如在github, csdn上面都有不错的素材和轮子,可以大大节省我们的时间。