8

ご存知のように、単純に次のようにします。

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

例外/エラーをキャッチし、そこから値「a」を抽出する方法はありますか? eval動的に作成された式をいくつか使用していて、それらで定義されていない名前を取得したいので、これが必要です。

私が自分自身を明確にしたことを願っています。ありがとう!マヌエル

4

3 に答える 3

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

正規表現を使用したくない場合は、代わりに次のようにすることができます

>>> str(e).split("'")[1]
'a'
于 2010-02-16T05:15:32.823 に答える
1
>>> import exceptions
>>> try:
...     a > 0
... except exceptions.NameError, e:
...     print e
... 
name 'a' is not defined
>>> 

'' の例外文字列を解析して、値を抽出できます。

于 2010-02-16T05:14:14.667 に答える