Проверьте, находится ли элемент из списка в другом списке в шаблоне django - PullRequest
1 голос
/ 25 апреля 2019

Я делаю 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?

Ответы [ 2 ]

2 голосов
/ 25 апреля 2019

Эта проверка немного сложна для шаблона, но вы можете легко добиться этого в коде Python, используя функцию any(). Поскольку строки длиннее, вы можете проверить, являются ли операции 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 голос
/ 25 апреля 2019

Как сказали @shourav 'Added' и '**Added**:\n' - это не одно и то же.Это было моей ошибкой, потому что я верил, что in работает как icontains.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...