Python把中文数字转化为阿拉伯数字

在处理小说文本中,有时会遇到把第一章转化为第1章,把第二十一章转化为第21章...也就是把中文序号转化为阿拉伯数字序号的情形。

这种情况如何操作呢?有人在Emeditor群里给出宏处理的方法,但是操作起来有点儿繁琐,不如用Python来的方便和快捷,今天我们来分享两种中文汉字序号转化为阿拉伯数字序号的方法。

一、Python编程法

此种方法是首先定义一个函数,然后把从零至十转化为对应数字后再对其中的百进行判断,可以实现从零至九百九十九的汉字序号转化。由于一般情况下,章数达不到一千章,所以基本上可以用。

二、使用cn2an这个包

第一种方法的局限性就是不能上千,一上千就会不支持。如果你想使用更为简单的方法,可以使用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:
# 壹佰贰拾叁元整

更多的使用方法,大家可以参照:

cn2an​pypi.org/project/cn2an/

三、学后反思

1. Python的最大优势就是它的开放性。同一个问题,如果得到解决,生成了模块,就可以直接拿来调用。很多其它的语言都是封闭性的,解决同样的问题需要从头开始,非常浪费时间。

2. 遇到同样的问题,可以在网上找一下看看有没有前人已经制作好的Python包,比如在github, csdn上面都有不错的素材和轮子,可以大大节省我们的时间。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PythonFun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值