如何仅打印在python中创建异常的值?

Posted

技术标签:

【中文标题】如何仅打印在python中创建异常的值?【英文标题】:How to print the value only which is creating exception in python? 【发布时间】:2020-10-18 00:12:57 【问题描述】:
try:
    a,b = map(int,input().split())
    print(a//b)
except ZeroDivisionError:
    print("invalid")
except ValueError:
    print("this value _ is not allowed for division")

我需要在此处打印值 _ 这是由“#”或“%”等异常引起的

【问题讨论】:

你能否更详细地描述问题我在理解发生了什么时遇到了问题。 【参考方案1】:

看起来您正在尝试获得类似于下面显示的代码的内容。这可以通过使用正则表达式(通过re 模块的search() 函数)来查找异常(e)参数(args)中出现的无效参数。

e.args 是一个元组,当 ValueError 由于输入的无效输入而引发时,该元组如下所示:

("invalid literal for int() with base 10: '%'",)

因此,我们可以这样做:

import re


try:
    a, b = map(int, input().split())
    print(a // b)
except ZeroDivisionError:
    print("Can't divide by zero")
except ValueError as e:
    regex_groups = re.search('\'(.+)\'|\"(.+)\"', e.args[0]).groups()
    invalid_arg = regex_groups[0] if regex_groups[0] else regex_groups[1]
    print(f"This value: invalid_arg is not allowed for division")

测试:

1 $
This value: $ is not allowed for division
Q 2
This value: Q is not allowed for division
% '
This value: % is not allowed for division
20 ?
This value: ? is not allowed for division
50 2
25

【讨论】:

以上是关于如何仅打印在python中创建异常的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据框中的值分配给在另一个数据框中创建的十分位数?

如何根据 barplot 的值在 matplotlib 中创建自定义图例?

如何在 Java 中创建要打印到 JFrame 的 JLabels 数组

如何在 Java 中创建自定义迭代器?

如何在 Python 中创建分类气泡图?

Robot Framework_004——字典的创建、合并和嵌套