如何从数组中取出一些项

时间:2019-05-17 12:11:21

标签: python jinja2

在我的flask / jinja2应用程序中,我从数据库中获取了一些行以打印在表中。对于每行,我想为第一项中的行定义一个标识符,用第二项定义该行的类,然后将其余行作为表数据打印。我这样做是可行的,但感觉有点混乱:

Sub determine_delim()
    Dim filetocheck As String, firstline As String
    Dim ff As Long
    filetocheck = "full path and name of file here"
    ff = FreeFile

    Open filetocheck For Input As ff
        Line Input #ff, firstline
    Close ff

    delimiter = most_popular(firstline)

End Sub

Function most_popular(str As String)

    Dim pieces As Variant
    Dim cnt As Long, ch as Long
    Dim minCount As Long
    Dim possibles As String

    possibles = "|¦,;" & Chr(9) ' Chr(9)=Tab

    For ch = 1 To Len(possibles)

        pieces = Split(str, Mid(possibles, ch, 1))
        cnt = UBound(pieces)

        If minCount < cnt Then
            minCount = cnt
            most_popular = Mid(possibles, ch, 1)
        End If

    Next ch

End Function

我想做类似的事情:

possibles

然后使用变量id和class定义行,然后遍历列表的剩余内容。 jinja2有可能吗?

(使用在debian 9上安装的jinja 2.8,但如果情况有所改善,当然可以升级)

2 个答案:

答案 0 :(得分:1)

您可以使用它们的索引从数组中获取第一个项目,并将数组的一个切片(例如row[2:])用于for循环:

<tr id="rec{{row[0]}}" class="{{row[1]}}" >
{%- for item in row[2:] %}
   <td>{{item}}</td>
{% endfor -%}</tr>

答案 1 :(得分:1)

我认为您可以在Jinja模板中使用切片,您可以尝试一下吗,因为我无法测试atm:

    <tr id="rec{{row[0]}}" 
    class="{{row[1]}}" >
    {% for  item in row[2:] %}
      <td>{{item}}</td>
    {% endfor -%}
    </tr>