整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Python Flask — 使用后端数据创建 HTML 表格

本文中,我们将讨论如何将一些表格数据从后端传递到 HTML 前端,并基于这些数据创建一个外观不错的表格。

我们的文件结构

为了简单起见,让我们只处理 2 个文件:

  • templates/index.html(在 templates 文件夹内)
  • app.py

app.py 中的代码

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():

    headers = ['fruit', 'price', 'country']

    tableData = [
        {'fruit':'apple', 'price':4, 'country':'singapore'},
        {'fruit':'orange', 'price':5, 'country':'singapore'},
        {'fruit':'pear', 'price':6, 'country':'singapore'},
        {'fruit':'apple', 'price':7, 'country':'malaysia'},
        {'fruit':'orange', 'price':8, 'country':'malaysia'},
        {'fruit':'pear', 'price':9, 'country':'malaysia'},
    ]

    return render_template(
        'index.html',
        headers=headers,
        tableData=tableData
    )

if __name__ == '__main__':
    app.run()

app.py 包含我们的 Python Flask 应用程序。 请注意,表格标题和表格数据本身在 render_template 函数中传递给我们的 HTML 模板 index.html。

我们希望以表格格式在我们的 HTML 前端中显示此数据。

templates/index.html 中的代码

此 HTML 文件从我们的 Python Flask 后端接收数据。 更具体地说,它接收 2 个变量——headers 和 tableData。

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">

<div class="px-5 mx-5">
    <h1>My Table</h1>

    <table class="table table-striped table-bordered">
        <thead>
            <tr>
                {% for header in headers %}
                    <th>{{header}}</th>
                {% endfor %}
            </tr>
        </thead>

        <tbody>
            {% for row in tableData %}
                <tr>
                    <td>{{row['fruit']}}</td>
                    <td>{{row['price']}}</td>
                    <td>{{row['country']}}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
    
</div>

当我们运行我们的应用程序时会发生什么

我们得到这个网页。

最后

希望本文对您有所帮助!

提:

用python写了一个简单的log分析,主要也就是查询一些key,value出来,后面也可以根据需求增加。查询出来后,为了好看,搞个html 表格来显示。

需要的组件: jinja2 flask 的模板。

先说下设计思路,主要是练习python代码玩,高手略过

模拟scrapy,搞个管线


每个管线分预处理,分析器,和后处理。预处理的话,可以筛选下数据,分析器提取关键信息,然后把结果丢给后处理。html报表就是在后处理生成。

再搞个manger类,管理很多个管线,虽然现在单路pipeLine就完成了,说不定以后还能扩展呢。



我们可以定义预处理,比如过滤一些不关注的关键字,或者关注一些特定关键字的行


预处理的话,只处理QtiDCT-C关键字的日志行。

然后把经过预处理后的数据丢给分析器

主要查询行数据行里面是否有keyword,然后根据分隔符,和结束符来提取内容

keyword delimiter xxxxxendwith 这样个模式

获取最终结果存储到字典里面 result[keyword]=xxxx。这里会trim,去掉 \r\n.

这样就有了结果集result.最后丢给posthandler 后处理。完成报表输出。


后处理主要是用jinja2的模板,然后传递参数,生成最终的html文件。

这里的jinja_template.temple, 内容如下



有了模板,就可以在渲染模板的时候提供字典,变量,在模板里面显示。最终完成报表的输出。


最终使用


最终在main 方法中,通过-d参数传入log所在目录,然后迭代所有的文件,使用input 把文本文件转换成行数据的list,丢给管线,最后把管线丢给manager,调用process ,完成txt日志的分析,到最后html的生产。

器之心报道

项目作者:vinayak mehta参与:一鸣

从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据。

PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很好的将不同的排版格式固定下来,形成版面清晰且美观的展示效果。然而,对于想要从 PDF 中提取信息的人们来说,PDF 是个噩梦,尤其是表格。

大量的学术报告、论文、分析文章都使用 PDF 展示其中的表格数据,但是对于如果想要直接从表格中复制数据则会非常麻烦。不久前,有一位开发者提供了一个可从文字 PDF 中提取表格信息的工具——Camelot,能够直接将大部分表格转换为 Pandas 的 Dataframe。

  • 项目地址:https://github.com/camelot-dev/camelot

Camelot 是什么

据项目介绍称,Camelot 是一个 Python 工具,用于将 PDF 文件中的表格数据提取出来。

具体而言,用户可以像使用 Pandas 那样打开 PDF 文件,然后利用这个工具提取表格数据,最后再指定输出的形式(如 csv 文件)。

代码示例

项目提供的 PDF 文件如图所示,假设用户需要提取这些文字之间的表格 2-1 中的信息。

PDF 文件。我们需要提取表格 2-1。

使用 Camelot 提取表格数据的代码如下:

>>> import camelot
>>> tables = camelot.read_pdf('foo.pdf') #类似于Pandas打开CSV文件的形式
>>> tables[0].df # get a pandas DataFrame!
>>> tables.export('foo.csv', f='csv', compress=True) # json, excel, html, sqlite,可指定输出格式
>>> tables[0].to_csv('foo.csv') # to_json, to_excel, to_html, to_sqlite, 导出数据为文件
>>> tables
<TableList n=1>
>>> tables[0]
<Table shape=(7, 7)> # 获得输出的格式
>>> tables[0].parsing_report
{
 'accuracy': 99.02,
 'whitespace': 12.24,
 'order': 1,
 'page': 1
}

以下为输出的结果,对于合并的单元格,Camelot 在抽取后做了空行处理,这是一个稳妥的方法。

安装方法

项目作者提供了三种安装方法。首先,你可以使用 Conda 进行安装,这是最简单的。

conda install -c conda-forge camelot-py

最流行的安装方法是使用 pip 安装。

pip install camelot-py[cv]

还可以从项目中克隆代码,并使用源码安装。


上一篇:HTML多层级下拉框
下一篇:jQuery 事件