python elementtree xpath - вставить переменную в findall @name=VARIABLEHERE
Можно ли передать переменную в @name
атрибут?
import xml.etree.ElementTree as ET
tree = ET.parse('C:/test.xml')
root = tree.getroot()
somelist = [x.text for x in root.findall(".//actionList[@name='VARIABLEHEREinsteadoftext']//value")]
Мне нужно получить все значения только из определенного списка действий, отфильтрованного по его имени, и игнорировать все остальные списки действий. Работает нормально с
[@name="ACTIONLISTNAME"]
но мне бы хотелось что-то вроде этого:
X = ACTIONLISTNAME
[@name=X]
Заранее спасибо!
1 ответ
Решение
Использовать форматирование строки:
value = "ACTIONLISTNAME"
root.findall(".//actionList[@name='%s']//value" % value)
Ответ о форматировании строки от @alecxe работает нормально, но если вы хотите использовать форматирование F-строк, вы можете сделать это вместо этого:
обратите внимание на двойные фигурные скобки в части схемы
xml_element.findall(f"{{x-schema:schema.xml}}row[@{attribute_name}='{attribute_value}']")