我正在通过列表创建for loop
。对于此列表中的每个元素,我想知道此元素是否可能与另一个列表中的4个单词之一相对应。
这是我描述情况的示例:
在我看来:
content = ['**Added**:\n', '* something (toto-544)\n', '\n', '**Changed**:\n', ...]
operations = ['Added', 'Changed', 'Fixed', 'INTERNAL']
从我的HTML文件:
{% for line in content %}
{% if line in operations %}
<tr class="table-subtitle">
<td colspan="12">{{ line }}</td>
</tr>
{% else %}
<tr class="table-value-content">
<td colspan="12">{{ line }}</td>
</tr>
{% endif %}
{% endfor %}
它应该显示与第二个元素不同的第一个line
元素(我在两个类之间更改了颜色)。因为line[0]
位于operations
中,而不是line[1]
中。
您是否知道为什么它无法通过我的for loop
/ if statement
工作?
答案 0 :(得分:2)
对于模板而言,此检查有点复杂,但是您可以使用any()
函数在Python代码中轻松实现此检查。
由于字符串较长,因此您可以检查操作是否为in
字符串:
any(
op.lower() in s.lower()
for op in operations)
测试代码:
content = ['**Added**:\n', '* something (toto-544)\n', '\n', '**Changed**:\n',]
operations = ['Added', 'Changed', 'Fixed', 'INTERNAL']
for s in content:
print()
print('s:', repr(s))
print('s in operations:', s in operations)
print('custom check: ', any(op.lower() in s.lower() for op in operations))
结果是:
s: '**Added**:\n'
s in operations: False
custom check: True
s: '* something (toto-544)\n'
s in operations: False
custom check: False
s: '\n'
s in operations: False
custom check: False
s: '**Changed**:\n'
s in operations: False
custom check: True
答案 1 :(得分:1)
@shourav 'Added'
和'**Added**:\n'
并非同一个人。这是我的错误,因为我相信in
的工作方式像icontains
。