本文中,我們將討論如何將一些表格數據從后端傳遞到 HTML 前端,并基于這些數據創建一個外觀不錯的表格。
為了簡單起見,讓我們只處理 2 個文件:
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 前端中顯示此數據。
此 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。
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]
還可以從項目中克隆代碼,并使用源碼安裝。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。