Завоевывание репутацию, которое не определяется от NameError в Python

Как Вы знаете, если мы просто делаем:

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

Есть ли способ поймать исключение/ошибку и извлечь из него значение 'a'. Мне нужно это, потому что я evaluating некоторые динамично созданные выражения, и хотели бы получить имена, которые не определяются в них.

Надеюсь, что я ясно выразился.Спасибо! Manuel

8
задан Manuel Aráoz 16 February 2010 в 05:07
поделиться

2 ответа

>>> 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'
6
ответ дан 5 December 2019 в 21:18
поделиться
>>> import exceptions
>>> try:
...     a > 0
... except exceptions.NameError, e:
...     print e
... 
name 'a' is not defined
>>> 

Вы можете проанализировать строку исключений для '', чтобы извлечь значение.

1
ответ дан 5 December 2019 в 21:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: