You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则表达式:如何在匹配的10位数字前加+91并批量处理文件

解决正则匹配后添加前缀的问题(附批量文件处理示例)

嘿,这个需求其实很容易搞定,核心就是利用正则的捕获分组+反向引用功能,我一步步给你讲清楚:

一、你的具体场景解决方案

你要给10位数字前加+91,只需要把匹配的数字用括号包裹成捕获组,然后在替换字符串里引用这个分组就行。直接看代码:

import re

s = "The number is 1234567890"
# 用()把\d{10}包裹成捕获组,替换时用\1引用捕获到的内容
result = re.sub(r"(\d{10})", r"+91\1", s)
print(result)  # 输出: The number is +911234567890

这里要注意替换字符串用原始字符串r"",避免转义字符\被Python解析成其他含义。如果怕混淆分组序号,也可以用命名分组,可读性更强:

result = re.sub(r"(?P<phone_num>\d{10})", r"+91\g<phone_num>", s)

二、通用方法:匹配模式后添加前缀/后缀

不管是要在匹配内容前加字符串,还是后面加,逻辑都是固定的3步:

  • 把需要保留的匹配部分用()创建捕获组;
  • 在替换字符串中,用\n(n是分组序号,从1开始)或者\g<组名>(命名分组)引用捕获到的内容;
  • 在引用的前后拼接你想要添加的字符串。

举几个实用例子:

  • 给邮箱地址前加mailto::
    s = "联系我:test@example.com"
    result = re.sub(r"(\w+@\w+\.\w+)", r"mailto:\1", s)
    # 输出: 联系我:mailto:test@example.com
    
  • 给所有"Python"后加"3.10+":
    s = "我喜欢Python,Python很强大"
    result = re.sub(r"(Python)", r"\13.10+", s)
    # 输出: 我喜欢Python3.10+,Python3.10+很强大
    

三、批量处理指定扩展名文件的示例代码

既然你要批量处理文件,这里给你一个完整的小脚本参考(记得先备份文件再测试!):

import os
import re

# 配置参数
target_extension = ".txt"  # 你要处理的文件扩展名
match_pattern = r"(\d{10})"  # 你的匹配正则
prefix_to_add = r"+91"  # 要添加的前缀

# 遍历当前目录下的目标文件
for filename in os.listdir("."):
    if filename.endswith(target_extension):
        # 读取文件内容
        with open(filename, "r", encoding="utf-8") as file:
            content = file.read()
        
        # 执行替换
        updated_content = re.sub(match_pattern, f"{prefix_to_add}\\1", content)
        # 或者用原始字符串:r"+91\1",效果完全一致
        
        # 写回文件(建议先备份原文件,比如复制成filename.bak)
        with open(filename, "w", encoding="utf-8") as file:
            file.write(updated_content)
        
        print(f"已处理文件:{filename}")

这样就能批量把所有指定扩展名文件里的10位数字都加上+91前缀啦!

内容的提问来源于stack exchange,提问作者MOHAMMED NUMAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:48:16