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

续前文扩展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 扩展Python控制台实现中文反馈信息之二-正则替换的更多相关文章

  1. 2019-02-10 扩展Python控制台实现中文反馈信息

    "中文编程"知乎专栏原文地址 参考了周蟒的实现, 运行效果如下: $ python3 解释器.py Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 ...

  2. python 控制台输出中文乱码问题

    乱码原因: 源码文件的编码格式为utf-8,但是window的本地默认编码是gbk,所以在控制台直接打印utf-8的字符串当然是乱码了! 解决方法: 1,print mystr.decode('utf ...

  3. sublime text 3 python 控制台输出中文乱码解决方案

    自建的python运行环境如下:python3 找到python3.sublime-build文件打开,在文件中加入"env": { "PYTHONIOENCODING& ...

  4. python print 控制台输出中文

    在pycharm里面的控制台用print输出信息,  本意想输出中文, 但是实际上是u\xxxx. 可以用这种方式: print("%s " % cn_string)

  5. 转:python的nltk中文使用和学习资料汇总帮你入门提高

    python的nltk中文使用和学习资料汇总帮你入门提高 转:http://blog.csdn.net/huyoo/article/details/12188573 nltk的安装 nltk初步使用入 ...

  6. C扩展Python

    基本想法: 先看中文小介绍,再看英文详细文档. 1. 参考 首先参考THIS, IBM的工程师好像出了好多这样的文章啊,而且每次看到时间戳,我都想戳自己- -! 2. ERROR 可能遇到错误: fa ...

  7. Python中使用中文

    python的中文问题一直是困扰新手的头疼问题,这篇文章将给你详细地讲解一下这方面的知识.当然,几乎可以确定的是,在将来的版本中,python会彻底解决此问题,不用我们这么麻烦了. 先来看看pytho ...

  8. python+sublime text2中文乱码[Decode error - output not utf-8]

    转自: http://blog.sina.com.cn/s/blog_765abd7b0101dtbw.html 学习,记录一下.中文编码真的挺麻烦.抽空把自己的sb3的配置写一些. 该问题让我纠结了 ...

  9. 扩展Python模块系列(四)----引用计数问题的处理

    承接上文,发现在使用Python C/C++ API扩展Python模块时,总要在各种各样的地方考虑到引用计数问题,稍不留神可能会导致扩展的模块存在内存泄漏.引用计数问题是C语言扩展Python模块最 ...

随机推荐

  1. LinkedBlockingQueue 注记

    近期看一个音频传输代码时,对方采用了LinkedBlockingQueue为生产者.消费者模式,来支撑读写线程. 个人感觉非常不错,因此也对这种方式进行总结,并梳理了一个基本的功能框架备用.主要两点: ...

  2. Lesson 28 No parking

    Text Jasper White is one of those rare people who believes in ancient myths. He has just bought a ne ...

  3. 算法与数据结构(二) 栈与队列的线性和链式表示(Swift版)

    数据结构中的栈与队列还是经常使用的,栈与队列其实就是线性表的一种应用.因为线性队列分为顺序存储和链式存储,所以栈可以分为链栈和顺序栈,队列也可分为顺序队列和链队列.本篇博客其实就是<数据结构之线 ...

  4. JavaScript中如何理解如何理解Array.apply(null, {length:5})

    先来看一个问题: 如何理解Array.apply(null, {length:5})的{length:5}? 我测试过Array.apply(null, {length:5}) //返回[undefi ...

  5. [Swift]LeetCode445. 两数相加 II | Add Two Numbers II

    You are given two non-empty linked lists representing two non-negative integers. The most significan ...

  6. Mysql优化之索引和字段

    Mysql优化是一个老生常谈的问题, 优化的方向也优化很多:从架构层;从设计层;从存储层;从SQL语句层; 今天讲解一下从索引和字段: 字段优化: ①  尽量使用TINYINT.SMALLINT.ME ...

  7. 好用的函数,assert,random.sample,seaborn tsplot, tensorflow.python.platform flags 等,持续更新

    python 中好用的函数,random.sample等,持续更新 random.sample random.sample的函数原型为:random.sample(sequence, k),从指定序列 ...

  8. SpringBoot配置 druid 数据源配置 慢SQL记录

    spring: datasource: url: jdbc:mysql://127.0.0.12:3306/test?autoReconnect=true&useUnicode=true&am ...

  9. Python内置函数(57)——setattr

    英文文档: setattr(object, name, value) This is the counterpart of getattr(). The arguments are an object ...

  10. log4cplus使用(二)-自定义日志等级

    log4cplus支持用户自定义日志等级,操作也比较简单,使用之前贴如下宏定义 #define LOG4CPLUS_MACRO_CREASH_LOG_LEVEL(pred) LOG4CPLUS_UNL ...