如何从单行字符串中还原Python traceback的多行格式化格式
单行Python traceback恢复多行格式的最优实现方案
traceback模块仅支持处理原生traceback对象,无法直接输入已经序列化为字符串的单行traceback,最优方案是利用Python traceback文本高度标准化的结构特征,通过正则匹配做拆分格式化,实现成本低、匹配准确率高。
实现代码
import re def format_single_line_traceback(single_line_tb: str) -> str: # 去除首尾可能存在的引号 tb_content = single_line_tb.strip("'\"") # 1. traceback头后面加换行 formatted = re.sub( r'(Traceback \(most recent call last\):)', r'\1\n', tb_content ) # 2. 每个File行前加换行和标准缩进 formatted = re.sub( r' File "', r'\n File "', formatted ) # 3. 最后一个栈帧后加换行,拆分出异常信息行 formatted = re.sub( r'(in \S+) ', r'\1\n', formatted ) return formatted
效果测试
输入示例:
'Traceback (most recent call last): File "<stdin>", line 1, in <module> Exception'
调用函数后的输出:
Traceback (most recent call last): File "<stdin>", line 1, in <module> Exception
完全符合预期格式化效果。
内容的提问来源于stack exchange,提问作者Infermath
相关产品推荐
相关产品推荐

