Я отвечаю на вопрос: Как получить значение переменной, учитывая ее имя в строке? , которая закрыта как дубликат со ссылкой на этот вопрос.
Если рассматриваемые переменные являются частью объекта (например, части класса), то некоторые полезные функции для достижения именно этого: hasattr
, getattr
и setattr
.
Так, например, вы можете иметь:
class Variables(object):
def __init__(self):
self.foo = "initial_variable"
def create_new_var(self,name,value):
setattr(self,name,value)
def get_var(self,name):
if hasattr(self,name):
return getattr(self,name)
else:
raise("Class does not have a variable named: "+name)
Тогда вы можете сделать:
v = Variables()
v.get_var("foo")
"initial_variable"
v.create_new_var(v.foo,"is actually not initial") v.initial_variable
"на самом деле не является начальным"
blockquote>
К сожалению, в настоящее время привязки python используют lxml для оценки xpath, который поддерживает только
XPath 1.0, XSLT 1.0 и расширения EXSLT через libxml2 и libxslt
blockquote>Но надежда не потеряна.
См. список ссылок W3C для реализации XML-запросов .
Реализовать поддержку XPath 2.0+ не так уж и сложно, есть ряд опций:
В PiPy есть некоторые модули, которые частично предлагают Функциональность XPath 2.0+.
Существуют некоторые XML / NoSQL-СУБД с открытым исходным кодом, которые реализуют функции XPath / XQuery 2.0, например,
Вы можете использовать подпроцесс для вызова процессора CLI XML (как предложено здесь ), например,
subprocess.call(["saxon", "-o:output.xml", "-s:file.xml", "file.xslt"])
Вы также можете попробовать использовать XSLT / XPath / XQuery с саксонами и / или другими Java XML классами [ 1110] в Jython .
Наконец, вы можете создать свой собственный веб-сервис, который сделает за вас тяжелую работу на языке, таком как Java, .NET и т. Д., Который поставляется с надлежащим XPath 3+.
Я не знаю, подходят ли какие-либо из этих вариантов к тому, что вы ищете, но дайте мне знать, если это поможет. Очень расстраивает, что это не поддерживается только привязками ...