用python批量把小说编号由大写数字替换成阿拉伯数字

本文介绍了一种使用正则表达式匹配中文小说章节标题的方法,并实现了将中文数字转换为阿拉伯数字的功能。通过定义中文数字和单位的字典,文章详细解释了如何解析中文数字并将其转换为相应的数值,最后应用于实际的章节标题替换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import re
pattern = re.compile(u'第(.*)章')

mulu=u'''第一千五百四十六章 道韵高低
第一千五百四十五章 好兄弟
第一千五百四十四章 臭不要脸
第一千五百四十三章 别来无恙二狗子
第一千五百四十二章 这货也在
第一千五百四十一章 我想知道真相
第一千五百四十章 别紧张
第一千五百三十九章 大展神通
第一千五百三十八章 霸道天宫院
第一千五百三十七章 徐缺很生气
第一千五百三十六章 别说话
第一千五百三十五章 天洲出事'''

# constants for chinese_to_arabic
CN_NUM = {
    '〇' : 0, '一' : 1, '二' : 2, '三' : 3, '四' : 4, '五' : 5, '六' : 6, '七' : 7, '八' : 8, '九' : 9, '零' : 0,
    '壹' : 1, '贰' : 2, '叁' : 3, '肆' : 4, '伍' : 5, '陆' : 6, '柒' : 7, '捌' : 8, '玖' : 9, '貮' : 2, '两' : 2,
}
 
CN_UNIT = {
    '十' : 10,
    '拾' : 10,
    '百' : 100,
    '佰' : 100,
    '千' : 1000,
    '仟' : 1000,
    '万' : 10000,
    '萬' : 10000,
    '亿' : 100000000,
    '億' : 100000000,
    '兆' : 1000000000000,
}
 
def chinese_to_arabic(cn):
    unit = 0   # current
    ldig = []  # digest
    for cndig in reversed(cn):
        
        if cndig in CN_UNIT:
            unit = CN_UNIT.get(cndig)
            if unit == 10000 or unit == 100000000:
                ldig.append(unit)
                unit = 1
                
        else:
            dig = CN_NUM.get(cndig)
            if unit:
                dig *= unit
                unit = 0
            ldig.append(dig)
          
    if unit == 10:
        ldig.append(10)
    val, tmp = 0, 0
    for x in reversed(ldig):
        if x == 10000 or x == 100000000:
            val += tmp * x
            tmp = 0
        else:
            tmp += x
    val += tmp
    return val


def replacement(m): 
    st ='第'+str(chinese_to_arabic(m.group(1)))+'章'
    return st


print(pattern.sub(replacement, mulu))
    
   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

玄星幻火

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

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

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

打赏作者

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

抵扣说明:

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

余额充值