首页 > 编程语言 >Python正则表达式替换(sub)中如何使用替换函数

Python正则表达式替换(sub)中如何使用替换函数

时间:2024-09-03 11:26:23浏览次数:10  
标签:中文 冒号 sub Python group0 替换 match

def sub_the_chinese_colon_of_the_question_number(_lines: str) -> str:
    """
    :param _lines:清理后的文本文件内容
    功能:查找并替换题号后的中文冒号为英文冒号。
    """

    # 定义替换函数,用于调用re.sub:
    def replacement(match) -> str:
        """
        :param match:匹配对象
        功能:保持匹配对象中比例的中文冒号,其他替换为英文冒号。
        假设:中文冒号后内容三种可能情况:1)非数字,如:企业员工应;(替换)
                                   2)数字年份,如:2001年;(替换)
                                   3)比例,如:1:1。(保持)
        """
        group0 = match.group(0)  # 整个匹配表达式
        pat_match = re.compile(r'\D|\d{4}年')  # 编译正则表达式
        if pat_match.match(match.group(1)):  # 匹配中文冒号后为非数字/数字年份
            print(f'{Fore.LIGHTGREEN_EX}已替换“{group0}”(:后为非数字/数字年份)', end='。')
            ou.print_current_line_number()  # 打印当前行号
            group0 = group0.replace(':', ':')  # 中文冒号替换为英文冒号
        else:  # 比例,保持中文冒号
            print(f'{Fore.LIGHTYELLOW_EX}未替换“{group0}”(比例中的“:”)', end='。')
            ou.print_current_line_number()  # 打印当前行号
        return group0

    pat_sub = re.compile(r'\d{1,3}:(.{5})')  # 匹配数字:(中文冒号),取5个任意文字是为了年份(2001年)
    return pat_sub.sub(replacement, _lines)

 

标签:中文,冒号,sub,Python,group0,替换,match
From: https://www.cnblogs.com/zdt168/p/18394207

相关文章