扩展Python控制台实现中文反馈信息之二-正则替换

简介: 扩展默认的Python控制台, 通过正则匹配和替换, 将报错/警告等信息翻译成中文.

"中文编程"知乎专栏原文地址
2019_02_18_python_

续前文扩展Python控制台实现中文反馈信息, 实现了如下效果:

>>> 学
Traceback (most recent call last):
  File "<console>", line 1, in <module>
命名错误: 命名'学'未定义
>>> [1] + 2
Traceback (most recent call last):
  File "<console>", line 1, in <module>
类型错误: 只能将list(而非"int")联结到list
>>> [1].length
Traceback (most recent call last):
  File "<console>", line 1, in <module>
属性错误: 'list'个体没有'length'属性
>>> def foo():
...     def bar():
...             print(type)
...     bar()
...     type = 1
... 
>>> foo()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "<console>", line 4, in foo
  File "<console>", line 3, in bar
命名错误: 在闭合作用域中, 自由变量'type'在引用之前未被赋值

源码在: program-in-chinese/study 现在支持的报错信息列表见测试用例: test翻译.py

参考re - Regular expression operations - Python 3.7.2 documentation, 用一系列(现8个)正则表达式匹配和替换实现, 比如:

if re.match(r"NameError: name '(.*)' is not defined", 原始信息):
    return re.sub(r"NameError: name '(.*)' is not defined", r"命名错误: 命名'\1'未定义", 原始信息)

期间发现Python编译器源代码中的报错信息所处位置比较分散, 似乎有上百处. 下面的打算:

  • 首先将它打包发布到Pypi, 参考Packaging Python Projects
  • 逐步补充报错信息, 除了在自己使用过程中发现的新报错信息, 也可调研哪些报错最为常见
  • 逐步改进中文信息. 比如只能将list(而非"int")联结到list => 只能将列表(而非整数)联结到列表
  • 上文提到的通过"定制sys.excepthook"实现尚未研究. 如无明显优势, 打算置后.

2019-02-18

相关文章
|
2月前
|
数据挖掘 数据安全/隐私保护 开发者
使用Spire.PDF for Python插件从PDF文件提取文字和图片信息
使用Spire.PDF for Python插件从PDF文件提取文字和图片信息
132 0
|
2月前
|
数据可视化 Python Windows
使用 Python 代码在 windows 控制台打印正弦三角函数
使用 Python 代码在 windows 控制台打印正弦三角函数
20 0
|
3月前
|
数据可视化 数据挖掘 开发工具
【办公自动化】用Python批量从上市公司年报中获取主要业务信息
【办公自动化】用Python批量从上市公司年报中获取主要业务信息
87 0
|
8天前
|
监控 开发者 Python
Python中记录程序报错信息的实践指南
Python中记录程序报错信息的实践指南
14 1
|
8天前
|
开发者 Python
在Python中查询进程信息的实用指南
在Python中查询进程信息的实用指南
10 2
|
14天前
|
机器学习/深度学习 算法 算法框架/工具
【Python机器学习专栏】深度学习中的正则化与优化技术
【4月更文挑战第30天】本文探讨了深度学习中的正则化和优化技术,以提升模型的泛化能力和训练效率。正则化包括L1和L2正则化以及Dropout,防止过拟合。优化技术涵盖梯度下降法、动量法和Adam优化器,加速模型收敛。Python示例展示了如何在Keras中应用这些技术,如L2正则化、Dropout及Adam优化器。
|
14天前
|
数据可视化 索引 Python
数据分享|Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分数据
数据分享|Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分数据
|
26天前
|
Python
python天气预报信息
python天气预报信息
|
1月前
|
Python
Python—提取页面上所有信息输出excel
Python—提取页面上所有信息输出excel
|
1月前
|
开发者 索引 Python
实践:如何使用python在网页的表格里抓取信息
实践:如何使用python在网页的表格里抓取信息