В Python вы можете использовать понимание списка , подобное Ruby select:
custom_fields = data["testcases"]["testcase"]["custom-fields"]["custom-field"]
filtered = [f for f in custom_fields if f["@id"] == "caseimportance"]
Python также имеет фильтр, который более непосредственно сопоставим с выбором Ruby:
Python 2:
filtered = filter(lambda f: (f["@id"] == "caseimportance"), custom_fields)
Python 3:
filtered = list(filter(lambda f: (f["@id"] == "caseimportance"), custom_fields))
Однако понимание списка часто считается более Pythonic.
Согласно (2) текущей рекомендации , в частности, относительно символьных данных и разметки , это (1) амперсанд (& ), левая угловая скобка (<), правая угловая скобка (>), а также одинарные кавычки (') и двойные кавычки (").
См. 2.2 Символы в «Extensible Markup Language (XML) 1.0 (Третье издание)» .
Обратите внимание, что, по крайней мере, с .NET, если вы используете XML API для работы с XML, вам не придется об этом беспокоиться. Это'
Вот определение того, что разрешено в значении атрибута .
'"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'"
Итак, вы не можете иметь:
'
, либо «
) &
должен быть & amp;
) <
должно быть & lt;
) Вы также не должны использовать какие-либо символы , которые прямо запрещены нигде в XML-документ (например, каналы форм и т. Д.).