如您所知,如果我们简单地这样做:
>>> a > 0
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a > 0
NameError: name 'a' is not defined
有没有办法捕获异常/错误并从中提取值“a”。 我需要这个,因为我正在使用一些动态创建的表达式,并且想要检索其中未定义的名称。
希望我说清楚了。 谢谢! 曼努埃尔
如果你不想使用正则表达式,你可以这样做
>>> import re
>>> try:
... a>0
... except (NameError,),e:
... print re.findall("name '(\w+)' is not defined",str(e))[0]
a
您可以解析异常字符串“”以提取值。
>>> import exceptions
>>> try:
... a > 0
... except exceptions.NameError, e:
... print e
...
name 'a' is not defined
>>>
import exceptions
您可以这样指定“a”的引用:
>>> try:
... a > 0
... except NameError as e:
... print e.message.split("'")[1]
...
a
>>>
>>> try:
... a > 0
... except NameError as e:
... locals()[e.message.split("'")[1]] = 0
...
>>> a
0
name
字段,因此对于大多数情况,您现在可以简单地使用
NameError
。