从Python中的NameError获取未定义的名称

问题描述 投票:0回答:4

如您所知,如果我们简单地这样做:

>>> a > 0
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    a > 0
NameError: name 'a' is not defined

有没有办法捕获异常/错误并从中提取值“a”。 我需要这个,因为我正在使用一些动态创建的表达式,并且想要检索其中未定义的名称。


希望我说清楚了。 谢谢! 曼努埃尔

python exception dynamic-data expression nameerror
4个回答
6
投票
如果你不想使用正则表达式,你可以这样做

>>> import re >>> try: ... a>0 ... except (NameError,),e: ... print re.findall("name '(\w+)' is not defined",str(e))[0] a



1
投票
您可以解析异常字符串“”以提取值。


1
投票
>>> 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 >>>



0
投票

>>> try: ... a > 0 ... except NameError as e: ... locals()[e.message.split("'")[1]] = 0 ... >>> a 0

 中添加了 name
 字段,因此对于大多数情况,您现在可以简单地使用 
NameError
    

© www.soinside.com 2019 - 2024. All rights reserved.