Python代码注释中的错别字如何批量修正?
莫名的很感动

Python代码注释中的错别字如何批量修正?
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 懂了
强迫症系列😉
- 闲
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 有些给用户看的 天天弹出错别字 是看不下去
每次呢个…这不是粤语吗, 后面额又是什么语= =

