2017-02-01 7 views
0

У меня проблема с функцией find в lXML. Но я думаю, что это более общий вопрос, как сказать, что я хочу проверить значение, а не ссылку на объект.lxml найти элемент по имени, но использовать переменную в поиске

Так вот код, который работает:

step = xml_obj.find('.//step/name[text()="Design"]').getparent() 

Если я пытаюсь заменить строку с объектом, результат всегда None.

stepn = 'Design' 
step = xml_obj.find('.//step/name[text()=stepn]').getparent() 

'NoneType' object has no attribute 'getparent' 

ответ

0
stepn = 'Design' 
step = xml_obj.find('.//step/name[text()={}]'.format(stepn)).getparent() 

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

Использование format для добавления переменной в строку

+0

Это также не работает. Объект по-прежнему отсутствует. – Empusas

+0

'step = xml_obj.find (' .// step/name [text() = {}] '. Format (stepn)). Getparent()' ValueError: имя поля нулевой длины в формате. Поэтому я отредактировал его в ' step = xml_obj.find ('.// ​​step/name [text() = {0}]'. format (stepn)). getparent() Тип печати (шаг) 'AttributeError: объект NoneType не имеет атрибута' GetParent» – Empusas