Python代码注释中的错别字如何批量修正?

莫名的很感动


Python代码注释中的错别字如何批量修正?
48 回复

5 额邀请码


import re
import os

def fix_typos_in_comments(file_path, typo_dict):
    """
    批量修正Python文件注释中的错别字
    
    Args:
        file_path: Python文件路径
        typo_dict: 错别字映射字典 {错误: 正确}
    """
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()
    
    # 匹配注释内容(单行注释和多行注释)
    def replace_in_comment(match):
        comment = match.group(0)
        # 对注释内容进行错别字替换
        for wrong, correct in typo_dict.items():
            comment = comment.replace(wrong, correct)
        return comment
    
    # 正则匹配单行注释和多行注释
    # 单行注释:以#开头直到行尾
    # 多行注释:三引号包裹的内容
    pattern = r'(#.*?$|\'\'\'.*?\'\'\'|\"\"\".*?\"\"\")'
    
    # 逐行处理以保持行结构
    lines = content.split('\n')
    in_multiline_comment = False
    multiline_comment = []
    result_lines = []
    
    for line in lines:
        # 处理多行注释的开始/结束
        if re.search(r'(\'\'\'|\"\"\")', line):
            if not in_multiline_comment:
                in_multiline_comment = True
                multiline_comment = [line]
            else:
                multiline_comment.append(line)
                in_multiline_comment = False
                # 处理完整的多行注释
                full_comment = '\n'.join(multiline_comment)
                for wrong, correct in typo_dict.items():
                    full_comment = full_comment.replace(wrong, correct)
                result_lines.append(full_comment)
                multiline_comment = []
            continue
        
        if in_multiline_comment:
            multiline_comment.append(line)
            continue
        
        # 处理单行注释
        if '#' in line:
            code_part, comment_part = line.split('#', 1)
            for wrong, correct in typo_dict.items():
                comment_part = comment_part.replace(wrong, correct)
            result_lines.append(f'{code_part}#{comment_part}')
        else:
            result_lines.append(line)
    
    # 写回文件
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write('\n'.join(result_lines))

def batch_fix_python_files(directory, typo_dict, extensions=('.py',)):
    """
    批量处理目录下的所有Python文件
    
    Args:
        directory: 目录路径
        typo_dict: 错别字映射字典
        extensions: 文件扩展名列表
    """
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(extensions):
                file_path = os.path.join(root, file)
                print(f'处理文件: {file_path}')
                fix_typos_in_comments(file_path, typo_dict)

# 使用示例
if __name__ == '__main__':
    # 定义常见的错别字映射
    common_typos = {
        '登陆': '登录',
        '帐号': '账号',
        '按扭': '按钮',
        '部暑': '部署',
        '函數': '函数',
        '變量': '变量',
        '對像': '对象',
        '迴圈': '循环',
        '遞迴': '递归',
        '閾值': '阈值',
        '閥值': '阈值',
        '綫程': '线程',
        '綫程': '线程',
        '綫性': '线性',
        '範例': '示例',
        '預設': '默认',
        '許可': '允许',
        '許可權': '权限',
        '記憶體': '内存',
        '存儲': '存储',
        '網路': '网络',
        '網格': '网格',
        '優化': '优化',
        '復雜': '复杂',
        '簡化': '简化',
        '調用': '调用',
        '繼承': '继承',
        '多型': '多态',
        '封裝': '封装',
        '抽象': '抽象',
        '實例': '实例',
        '靜態': '静态',
        '動態': '动态',
        '同步': '同步',
        '異步': '异步',
        '並發': '并发',
        '并行': '并行',
        '序列': '序列',
        '反序列': '反序列',
        '哈希': '哈希',
        '散列': '散列',
        '碰撞': '碰撞',
        '衝突': '冲突',
        '緩存': '缓存',
        '快取': '缓存',
        '日誌': '日志',
        '紀錄': '记录',
        '錯誤': '错误',
        '異常': '异常',
        '警告': '警告',
        '調試': '调试',
        '測試': '测试',
        '單元': '单元',
        '集成': '集成',
        '驗收': '验收',
        '壓力': '压力',
        '性能': '性能',
        '效能': '性能',
        '瓶頸': '瓶颈',
        '優化': '优化',
        '改進': '改进',
        '增強': '增强',
        '擴展': '扩展',
        '插件': '插件',
        '擴充': '扩展',
        '模組': '模块',
        '組件': '组件',
        '框架': '框架',
        '庫': '库',
        '套件': '包',
        '依賴': '依赖',
        '版本': '版本',
        '兼容': '兼容',
        '遷移': '迁移',
        '升級': '升级',
        '降級': '降级',
        '回滾': '回滚',
        '備份': '备份',
        '恢復': '恢复',
        '還原': '还原',
        '監控': '监控',
        '告警': '告警',
        '通知': '通知',
        '報告': '报告',
        '統計': '统计',
        '分析': '分析',
        '視覺化': '可视化',
        '圖表': '图表',
        '圖形': '图形',
        '圖像': '图像',
        '圖片': '图片',
        '視頻': '视频',
        '音頻': '音频',
        '文件': '文件',
        '文檔': '文档',
        '目錄': '目录',
        '路徑': '路径',
        '鏈接': '链接',
        '引用': '引用',
        '索引': '索引',
        '搜索': '搜索',
        '查找': '查找',
        '替換': '替换',
        '匹配': '匹配',
        '正則': '正则',
        '表達式': '表达式',
        '模式': '模式',
        '模板': '模板',
        '樣式': '样式',
        '格式': '格式',
        '編碼': '编码',
        '解碼': '解码',
        '加密': '加密',
        '解密': '解密',
        '簽名': '签名',
        '驗證': '验证',
        '認證': '认证',
        '授權': '授权',
        '權限': '权限',
        '角色': '角色',
        '用戶': '用户',
        '管理員': '管理员',
        '操作員': '操作员',
        '開發者': '开发者',
        '測試者': '测试者',
        '使用者': '用户',
        '客戶': '客户',
        '服務': '服务',
        '服務器': '服务器',
        '客戶端': '客户端',
        '請求': '请求',
        '響應': '响应',
        '狀態': '状态',
        '代碼': '代码',
        '源碼': '源码',
        '二進制': '二进制',
        '十六進制': '十六进制',
        '十進制': '十进制',
        '八進制': '八进制',
        '布爾': '布尔',
        '整數': '整数',
        '浮點數': '浮点数',
        '字符串': '字符串',
        '字串': '字符串',
        '字元': '字符',
        '字節': '字节',
        '數組': '数组',
        '列表': '列表',
        '元組': '元组',
        '字典': '字典',
        '集合': '集合',
        '隊列': '队列',
        '堆棧': '堆栈',
        '鏈表': '链表',
        '樹': '树',
        '圖': '图',
        '堆': '堆',
        '棧': '栈',
        '哈希表': '哈希表',
        '散列表': '散列表',
        '映射': '映射',
        '鍵值': '键值',
        '迭代': '迭代',
        '遍歷': '遍历',
        '排序': '排序',
        '查找': '查找',
        '過濾': '过滤',
        '轉換': '转换',
        '計算': '计算',
        '運算': '运算',
        '操作': '操作',
        '方法': '方法',
        '函數': '函数',
        '過程': '过程',
        '子程序': '子程序',
        '模塊': '模块',
        '類': '类',
        '對象': '对象',
        '屬性': '属性',
        '字段': '字段',
        '成員': '成员',
        '方法': '方法',
        '構造': '构造',
        '析構': '析构',
        '繼承': '继承',
        '多態': '多态',
        '封裝': '封装',
        '抽象': '抽象',
        '接口': '接口',
        '實現': '实现',
        '重寫': '重写',
        '重載': '重载',
        '覆蓋': '覆盖',
        '隱藏': '隐藏',
        '暴露': '暴露',
        '公開': '公开',
        '私有': '私有',
        '保護': '保护',
        '靜態': '静态',
        '動態': '动态',
        '虛擬': '虚拟',
        '實例': '实例',
        '類別': '类',
        '型別': '类型',
        '數據': '数据',
        '資料': '数据',
        '信息': '信息',
        '訊息': '信息',
        '內容': '内容',
        '上下文': '上下文',
        '環境': '环境',
        '配置': '配置',
        '設定': '设置',
        '選項': '选项',
        '參數': '参数',
        '引數': '参数',
        '變量': '变量',
        '常量': '常量',
        '標識': '标识',
        '標記': '标记',
        '標籤': '标签',
        '註釋': '注释',
        '說明': '说明',
        '描述': '描述',
        '定義': '定义',
        '聲明': '声明',
        '賦值': '赋值',
        '初始化': '初始化',
        '銷毀': '销毁',
        '釋放': '释放',
        '分配': '分配',
        '回收': '回收',
        '管理': '管理',
        '控制': '控制',
        '調度': '调度',
        '計劃': '计划',
        '任務': '任务',
        '進程': '进程',
        '線程': '线程',
        '協程': '协程',
        '並發': '并发',
        '并行': '并行',
        '同步': '同步',
        '異步': '异步',
        '阻塞': '阻塞',
        '非阻塞': '非阻塞',
        '事件': '事件',
        '回調': '回调',
        '信號': '信号',
        '消息': '消息',
        '隊列': '队列',
        '管道': '管道',
        '套接字': '套接字',
        '端口': '端口',
        '協議': '协议',
        '格式': '格式',
        '編碼': '编码',
        '解碼': '解码',
        '壓縮': '压缩',
        '解壓': '解压',
        '加密': '加密',
        '解密': '解密',
        '簽名': '签名',
        '驗證': '验证',
        '認證': '认证',
        '授權': '授权',
        '會話': '会话',
        '令牌': '令牌',
        '憑證': '凭证',
        '證書': '证书',
        '密鑰': '密钥',
        '公鑰': '公钥',
        '私鑰': '私钥',
        '對稱': '对称',
        '非對稱': '非对称',
        '哈希': '哈希',
        '散列': '散列',
        '摘要': '摘要',
        '鹽值': '盐值',
        '隨機': '随机',
        '偽隨機': '伪随机',
        '種子': '种子',
        '算法': '算法',
        '邏輯': '逻辑',
        '條件': '条件',
        '分支': '分支',
        '循環': '循环',
        '遞歸': '递归',
        '迭代': '迭代',
        '遍歷': '遍历',
        '搜索': '搜索',
        '查找': '查找',
        '排序': '排序',
        '過濾': '过滤',
        '映射': '映射',
        '歸約': '归约',
        '聚合': '聚合',
        '分組': '分组',
        '連接': '连接',
        '合併': '合并',
        '拆分': '拆分',
        '切片': '切片',
        '索引': '索引',
        '鍵': '键',
        '值': '值',
        '項': '项',
        '元素': '元素',
        '成員': '成员',
        '長度': '长度',
        '大小': '大小',
        '容量': '容量',
        '尺寸': '尺寸',
        '範圍': '范围',
        '區間': '区间',
        '邊界': '边界',
        '界限': '界限',
        '閾值': '阈值',
        '閥值': '阈值',
        '精度': '精度',
        '準確': '准确',
        '誤差': '误差',
        '偏差': '偏差',
        '方差': '方差',
        '標準': '标准',
        '規範': '规范',
        '規則': '规则',
        '約束': '约束',
        '限制': '限制',
        '條件': '条件',
        '前提': '前提',
        '假設': '假设',
        '推論': '推论',
        '結論': '结论',
        '證明': '证明',
        '驗證': '验证',
        '測試': '测试',
        '實驗': '实验',
        '模擬': '模拟',
        '仿真': '仿真',
        '模型': '模型',
        '模式': '模式',
        '範式': '范式',
        '架構': '架构',
        '設計': '设计',
        '方案': '方案',
        '策略': '策略',
        '戰術': '战术',
        '技巧': '技巧',
        '方法': '方法',
        '方式': '方式',
        '手段': '手段',
        '工具': '工具',
        '技術': '技术',
        '技能': '技能',
        '知識': '知识',
        '經驗': '经验',
        '實踐': '实践',
        '實戰': '实战',
        '案例': '案例',
        '例子': '例子',
        '示例': '示例',
        '演示': '演示',
        '展示': '展示',
        '表現': '表现',
        '性能': '性能',
        '效能': '性能',
        '效率': '效率',
        '效果': '效果',
        '效益': '效益',
        '收益': '收益',
        '成本': '成本',
        '代價': '代价',
        '風險': '风险',
        '安全': '安全',
        '保密': '保密',
        '隱私': '隐私',
        '保護': '保护',
        '防護': '防护',
        '防御': '防御',
        '攻擊': '攻击',
        '漏洞': '漏洞',
        '弱點': '弱点',
        '缺陷': '缺陷',
        '錯誤': '错误',
        '故障': '故障',
        '異常': '异常',
        '崩潰': '崩溃',
        '死機': '死机',
        '卡頓': '卡顿',
        '延遲': '延迟',
        '超時': '超时',
        '重試': '重试',
        '恢復': '恢复',
        '備份': '备份',
        '還原': '还原',
        '遷移': '迁移',
        '升級': '升级',
        '降級': '降级',
        '回滾': '回滚',
        '部署': '部署',
        '發布': '发布',
        '上線': '上线',
        '下線': '下线',
        '維護': '维护',
        '運維': '运维',
        '監控': '监控',
        '告警': '告警',
        '日志': '日志',
        '記錄': '记录',
        '審計': '审计',
        '統計': '统计',
        '分析': '分析',
        '報告': '报告',
        '文檔': '文档',
        '手冊': '手册',
        '指南': '指南',
        '教程': '教程',
        '培訓': '培训',
        '教育': '教育',
        '學習': '学习',
        '研究': '研究',
        '開發': '开发',
        '編程': '编程',
        '編碼': '编码',
        '測試': '测试',
        '調試': '调试',
        '優化': '优化',
        '重構': '重构',
        '清理': '清理',
        '整理': '整理',
        '規範': '规范',
        '標準': '标准',
        '質量': '质量',
        '品質': '品质',
        '可靠': '可靠',
        '穩定': '稳定',
        '可用': '可用',
        '可擴': '可扩',
        '可維': '可维',
        '可測': '可测',
        '可讀': '可读',
        '可維': '可维',
        '可移': '

哈哈 这也是一种贡献 😂

要不要我去帮你把他还回去😂

楼主你这是在泄露公司代码吗

oops 看到 ssserver 懂了

强迫症系列😉


  1. 2. 看不下去

有人在研究你代码
顺便有强迫症

可能是上司在你身后默默的支持着你 哈哈哈哈

公告管理界面 那一行,到底改啥了?

再加一条注释:don’t touch my comments!

同 10 楼问.

#10 字写的不好看,重新写了一遍

啊啊??

5 额是什么?

#1
#15 按照发音 我想到东北地区有个地方说话总是把 [个] 发成 [额] 的音 可能 lz 和同事都习惯了这种发音吧




公字前面有个 BS -> [ ]

#17 这个是咋打出来的啊…

不是应该惭愧吗

这得问 LZ 了,我一般也只有在 Windows 下代码里莫名丢失\r 而已。 上面符号被 V2 吃掉了。。

这是真爱啊,楼主你就从了吧。

在一起,在一起~~

话说,驼峰 python 好别扭。。。。

招人吗,我想要这样的同事

在一起吧。

ssserver😌

http://opj9lh0x4.bkt.clouddn.com/18-1-7/7172864.jpg
这个 #251 是不是有 typo? 「 ssesrver 」?

没有洁癖成不了优秀的程序员

有时候看到同事乱注释,我也会更改过来。最好约定俗称一个同意的规则。

很正常的啊,daily delivery 后我经常帮程序员改这种小瑕疵,然后 commit 的时候写“屁股擦干净了”

哈哈 不是公司的,就是自己写的小项目


是是是…有的时候就没注意,回头一定小心点


没有怎么看规范,基本就随心了,那天抽空去看下变量命名规则


这个说的好像有那么点道理

这个厉害了!

纯东北野生,麻烦仔细想想是东北哪个地方有这样发音的,我去了解一下,不开玩笑。

#32 记不清了 应该是辽宁省内的一些地方

良心同事😄

换五笔输入法,问题就解决。
五笔不是一会打错别字,而是五笔打错就是打错,不会闹同音字笑话

五笔一样。我同事记错了“根据”的 gen 字怎么写,于是把俩字分开打,打了个“跟据”出来

代码不是按等宽字体显示的吗?公字前边如果有空格应该能看出来啊,可是我看不出来

强迫症患者+1
我也经常干这种事。
贵在专注,成于细节

如果这都不算爱

这就是爱

第 251 行,那个不应该写成 ssserver 吗



最好约定俗称一个同意的规则
最好约定俗成一个统一的规则

就是这样,我改别人的。别人改我的。自己写的错误自己不容易发现。

5 额这个,要我我也改,哈哈

不是空格,是不可打印字符,notepad 显示 BS,我 chrome 里显示方框,lz 电脑直接看不见

说话你这是第二次发吧。。。点开一看,已然 star

233 有些给用户看的 天天弹出错别字 是看不下去

每次呢个…这不是粤语吗, 后面额又是什么语= =

回到顶部