小编Ste*_*aer的帖子

以特殊字符开头或结尾的单词的单词边界会产生意想不到的结果

假设我想匹配短语Sortes\index[persons]{Sortes}中短语的存在test Sortes\index[persons]{Sortes} text

使用 pythonre我可以做到这一点:

>>> search = re.escape('Sortes\index[persons]{Sortes}')
>>> match = 'test Sortes\index[persons]{Sortes} text'
>>> re.search(search, match)
<_sre.SRE_Match object; span=(5, 34), match='Sortes\\index[persons]{Sortes}'>
Run Code Online (Sandbox Code Playgroud)

这有效,但我想避免搜索模式Sortes对短语给出肯定的结果test Sortes\index[persons]{Sortes} text

>>> re.search(re.escape('Sortes'), match)
<_sre.SRE_Match object; span=(5, 11), match='Sortes'>
Run Code Online (Sandbox Code Playgroud)

所以我使用\b模式,像这样:

search = r'\b' + re.escape('Sortes\index[persons]{Sortes}') + r'\b'
match = 'test Sortes\index[persons]{Sortes} text'
re.search(search, match)
Run Code Online (Sandbox Code Playgroud)

现在,我没有得到匹配。

如果搜索模式不包含任何字符[]{},则它有效。例如:

>>> re.search(r'\b' + re.escape('Sortes\index') + r'\b', 'test Sortes\index test')
<_sre.SRE_Match object; span=(5, 17), match='Sortes\\index'>
Run Code Online (Sandbox Code Playgroud)

另外,如果我删除 …

python regex

7
推荐指数
1
解决办法
1067
查看次数

嵌套列表上的Jinja循环创建空输出

我有这个结构的列表传递给模板与barsPython 3.4中的名称:

[{'var': 1.18, 'occurrences': [0.0805, 0.0808, 0.0991, 0.0994, 0.2356], 'name': 'item name'},
 {'var': 2.31, 'occurrences': [1.0859, 1.1121, 1.4826, 1.4829, 1.8126, 1.8791], 'name': 'other name'}]
Run Code Online (Sandbox Code Playgroud)

我希望它为每个字典创建以下输出:

% List with names
item 1: item name
item 2: other name

% List with vars
item 1: 1.18
item 2: 2.31

% List with occurences
item 1: 0.0805, 0.0808, 0.0991, 0.0994, 0.2356
item 2: 1.0859, 1.1121, 1.4826, 1.4829, 1.8126, 1.8791
Run Code Online (Sandbox Code Playgroud)

前两个没问题,但是我无法让它循环出现列表.我使用以下jinja模板:

{% for item in bars %}
  item {{ loop.index }}: …
Run Code Online (Sandbox Code Playgroud)

python loops jinja2

5
推荐指数
1
解决办法
5408
查看次数

标签 统计

python ×2

jinja2 ×1

loops ×1

regex ×1