Как Вы знаете, если мы просто делаем:
>>> a > 0
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a > 0
NameError: name 'a' is not defined
Есть ли способ поймать исключение/ошибку и извлечь из него значение 'a'. Мне нужно это, потому что я eval
uating некоторые динамично созданные выражения, и хотели бы получить имена, которые не определяются в них.
Надеюсь, что я ясно выразился.Спасибо! Manuel
>>> 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'
>>> import exceptions
>>> try:
... a > 0
... except exceptions.NameError, e:
... print e
...
name 'a' is not defined
>>>
Вы можете проанализировать строку исключений для '', чтобы извлечь значение.