#python #xslt #jinja2
#python #xslt #jinja2
Вопрос:
Попытка удалить все специальные и буквенно-цифровые символы из строки в jinja2.
XSLT:
<xsl:variable name="splChar">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$amp;amp;%^*()_ .[]{}|~`:;",'.?amp;<amp;>=
</xsl:variable>
<xsl:value-of select="translate($str,$splChar,'')" />
jinja2:
{% str | replace("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$amp;amp;%^*()_ .[]{}|~`:;",'.?", "") %}
Комментарии:
1. Является ли пользовательский фильтр вариантом для вас?
2. К сожалению, платформа, над которой я работаю, не может реализовать пользовательский фильтр, я должен был упомянуть об этом
3. Итак, речь идет не о XSLT. Вы просто используете язык в качестве примера.
4. Конечно, но я перевожу с xslt на jinja2.
Ответ №1:
Вот решение с regex_replace
.
Он заменяет все символы, которые не являются ( ^
) буквенно-цифровыми ( A-Za-z0-9
), ничем ( ""
):
{% test_string | regex_replace ("[^A-Za-z0-9]","") %}
Со следующим test_string
: 'AAAB©©c\oTT$e#Teste00-4?'
,
он возвращает AAABcoTTeTeste004
, как и ожидалось!
Комментарии:
1. Вы уверены, что у нас есть
regex_replace
функция, доступная в Jinja?2. Вы правы. Кажется, что
regex_replace
это фильтр Ansible!