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}']")
Другие вопросы по тегам