精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用 Python 的 Template 類生成文件報告

開發 后端
在本文中,您將學習如何利用此類根據當前使用的數據生成輸出文件,以及如何以相同的方式操作字符串。

介紹

很多時候,我發現自己需要進行生成報告、輸出文件或字符串的任務。它們或多或少都會遵循某種模式,通常這些模式是如此相似,以至于我們希望擁有一個可以重用并直接輸入數據的模板。幸運的是,Python提供了一個可以幫助我們的類:string.Template。

在本文中,您將學習如何利用此類根據當前使用的數據生成輸出文件,以及如何以相同的方式操作字符串。因此,本文不僅使用您在日常工作中可能遇到的示例,還為您提供了許多您可能知道的實際工具,并且該工具將此類用于生成報告文件。下面讓我們開始吧!

注意:本文基于Python 3.9.0(CPython)。您可以在GitHub(https://github.com/DahlitzFlorian/generate-file-reports-using-pythons-template-class)上找到整篇文章中使用的代碼示例。

在看一個示例之前,讓我們花一些時間來看看使用string.Template相對于其他解決方案的優勢。

1、無需其他依賴項,開箱即用,因此不需要使用pip install命令安裝。

2、它是輕量級的,當然諸如Jinja2和Mako之類的模板引擎已被廣泛使用。但是,在本文介紹的方案中,這些功能是過分地夸大了。

3、關注點分離:可以使用模板文件將其移動到外部位置,而不是直接在代碼中嵌入字符串操作和報告生成。如果您要更改報告的結構或設計,則可以交換模板文件,而無需更改代碼。

由于這些優點,一些知名的第三方庫和工具正在使用它。Wily是一個例子,在2018年底,Wily的發明者和維護者Anthony Shaw希望支持HTML作為wily生成的報告的輸出格式。

示例:生成最佳圖書的報告

在討論了使用Python的內置string.Template類背后的動機之后,我們將看一下第一個實際示例。想象一下,您正在一家公司工作,該公司發布有關過去一年出版的最佳書籍的年度報告。2020年是特殊的一年,因為除了您的年度報告之外,您還會發布有史以來最好的書籍清單。

在這一點上,我們不在乎數據來自何處或哪些書籍是該列表的一部分。為了簡單起見,我們假設有一個名為data.json的JSON文件,其中包含作者姓名和書名的映射,如下所示。

{
"Dale Carnegie": "How To Win Friends And Influence People",
"Daniel Kahneman": "Thinking, Fast and Slow",
"Leo Tolstoy": "Anna Karenina",
"William Shakespeare": "Hamlet",
"Franz Kafka": "The Trial"
}

您現在的任務是以一種可以與他人共享的方式(例如, 大型雜志、公司或博主)。該公司認為使用HTML格式的簡單表格就足夠了。現在的問題是:如何生成此HTML表格?

當然,您可以手動執行此操作,也可以為每本書創建占位符。但是后面如果能擁有更通用的版本是非常可取的,因為可以擴展列表內容或更改結構設計。

現在我們可以利用Python的string.Template類!我們首先創建實際的模板,如下所示。在這里,我們將文件稱為template.html。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Great Books of All Time</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
</head>
<body>
<div class="container">
<h1>Great Books of All Time</h1>
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Author</th>
<th scope="col">Book Title</th>
</tr>
</thead>
<tbody>
${elements}
</tbody>
</table>
</div>
</body>
</html>

該文件本身非常初級。我們使用引導程序進行樣式設置,并創建了最終表的基本結構。表頭已包含在內,但數據仍然丟失。請注意,在tbody元素中,使用了一個占位符$ {elements}來標記我們稍后將注入書籍列表的位置。

我們把所有都已設置為實現生成所需輸出的Python腳本!因此,我們在當前工作目錄中創建一個名為report.py的新Python文件。首先,我們導入所需的兩個內置模塊,并從JSON文件加載數據。

# report.py
import json
import string
with open("data.json") as f:
data = json.loads(f.read())

現在,data變量是一個字典,其中包含作者的名稱(鍵)和書名(值)作為鍵值對。接下來,我們生成HTML表,將其放入模板中(還記得占位符嗎?)。因此,我們初始化一個空字符串,向其添加新的表行,如下所示。

content = ""
for i, (author, title) in enumerate(data.items()):
content += "<tr>"
content += f"<td>{i + 1}</td>"
content += f"<td>{author}</td>"
content += f"<td>{title}</td>"
content += "</tr>"

該代碼段顯示了我們遍歷數據字典中的所有項目,并將書名以及作者的名字放在相應的HTML標簽中。我們創建了最終的HTML表。在下一步中,我們需要加載之前創建的模板文件:

with open("template.html") as t:
template = string.Template(t.read())

注意,string.Template接受一個字符串,而不是一個文件路徑。因此,您還可以提供在程序中先前創建的字符串,而無需將其保存到文件中。就我們而言,我們提供了template.html文件的內容。

最后,我們使用模板的replace()方法將占位符元素替換為存儲在變量內容中的字符串。該方法返回一個字符串,我們將其存儲在變量final_output中。最后但并非最不重要的一點是,我們創建了一個名為report.html的新文件,并將最終輸出寫入該文件。

final_output = template.substitute(elements=content)
with open("report.html", "w") as output:
output.write(final_output)

現在已經生成了第一個文件報告!如果在瀏覽器中打開report.html文件,則可以看到結果。

safe_substitution()方法

現在,您已經構建了第一個string.Template用例,在結束本文之前,我想與您分享一個常見情況及其解決方案:安全替換。它是什么?

讓我們舉個例子:您有一個字符串,您想在其中輸入一個人的名字和姓氏。您可以按照以下步驟進行操作:

# safe_substitution.py
import string
template_string = "Your name is ${firstname} ${lastname}"
t = string.Template(template_string)
result = t.substitute(firstname="Florian", lastname="Dahlitz")
print(result)

但是,如果您錯過傳遞一個或另一個的值會怎樣?它引發一個KeyError。為避免這種情況,我們可以利用safe_substitution()方法。在這種情況下,safe意味著Python在任何情況下都嘗試返回有效字符串。因此,如果找不到任何值,則不會替換占位符。

讓我們按以下方式調整代碼:

# safe_substitution.py
import string
template_string = "Your name is ${firstname} ${lastname}"
t = string.Template(template_string)
result = t.safe_substitute(firstname="Florian")
print(result) # Your name is Florian ${lastname}

在某些情況下,這可能是一個更優雅的解決方案,甚至是必須的行為。但是這可能在其他地方引起意外的副作用。

本文概要

在閱讀本文時,您不僅學習了Python字符串的基本知識。Template類以及使用它的原因,而且還實現了第一個文件報告腳本!此外,您已經了解了safe_substitution()方法以及在哪種情況下使用它可能會有所幫助。

責任編輯:龐桂玉 來源: Python數據之道
相關推薦

2009-12-28 16:10:38

WPF生成文件

2022-07-18 14:33:05

PythonPDF報告

2012-04-25 09:24:17

Java

2009-04-27 09:41:01

C#WPFTemplate

2024-01-01 13:27:44

pydoc工具代碼

2009-09-10 11:11:07

pem密鑰文件

2009-06-18 11:48:07

Struts2POI生成文件

2009-11-24 09:23:14

生成PHP類文件

2011-08-31 10:18:09

Template St

2023-11-06 06:39:36

數據分析Python

2024-03-20 08:37:34

數據處理Python數據分析

2024-02-22 14:54:44

pytestreporting測試

2021-11-06 23:19:39

Python電腦文件

2022-07-12 10:48:27

Python數據日報命令

2009-12-17 09:31:02

Ruby on Rai

2022-04-29 11:52:02

API代碼HTTP

2023-03-29 07:02:46

開源項目工具

2022-03-25 14:24:18

谷歌自然語言算法

2009-10-27 15:21:45

VB.NET文件處理

2023-03-06 16:17:13

點贊
收藏

51CTO技術棧公眾號

亚洲人成电影网站色| 亚洲成人中文在线| 91沈先生在线观看| 精品无码一区二区三区电影桃花 | 欧美成人乱码一区二区三区| 国产一区二区视频播放| 香蕉视频免费在线播放| 国产成人av一区二区三区在线 | 日韩av黄色| 亚洲高清视频的网址| 天天好比中文综合网| 欧美性猛交 xxxx| 麻豆视频一区二区| 8x拔播拔播x8国产精品| 来吧亚洲综合网| 欧美人妖视频| 欧美一区二区三区免费在线看| 日本日本19xxxⅹhd乱影响| 久久亚洲天堂| 久久精品视频免费观看| 国产精品一 二 三| 国产又粗又猛又爽又黄91| 亚洲在线电影| 欧美激情亚洲另类| 欧美日韩色视频| 国产成人影院| 日韩精品中文字幕视频在线| 久久综合桃花网| 欧美久久久网站| 日本韩国欧美国产| 可以在线看的av网站| 亚洲精品一线| 亚洲日本中文字幕区| 日韩欧美精品一区二区| 香蕉视频911| av网站一区二区三区| 91九色露脸| 国产女人爽到高潮a毛片| 热久久久久久久| 国产经典一区二区| 亚洲国产精品无码久久久| 一本色道88久久加勒比精品| 色综合视频网站| 国精品人伦一区二区三区蜜桃| 激情综合网五月| 日韩精品亚洲精品| 毛片网站免费观看| 欧美日韩麻豆| 精品香蕉一区二区三区| 亚洲精品乱码久久| 日本中文字幕在线一区| 日韩精品福利在线| 亚洲最大成人网站| 奇米色欧美一区二区三区| 亚洲欧美日韩图片| 亚洲国产av一区| 欧美丝袜一区| 色多多国产成人永久免费网站 | 欧美ab在线视频| 欧美精品在线免费观看| 久草成人在线视频| 亚洲无吗在线| 欧美重口另类videos人妖| 中文字幕一区在线播放| 日本在线不卡视频一二三区| 国产精品99久久久久久久久久久久| aaaaaa毛片| 久久精品国产秦先生| 91精品在线观| 蜜桃91麻豆精品一二三区| 成人精品电影在线观看| 欧美12av| 免费在线午夜视频| 亚洲最大成人综合| 国产一区二区在线视频播放| 网友自拍亚洲| 欧美一区二区三区视频在线观看| 伊人影院在线观看视频| 性欧美lx╳lx╳| 视频在线观看99| 精品一区二区三区人妻| 国产农村妇女毛片精品久久莱园子| 日韩**中文字幕毛片| 最近中文字幕在线视频| 国产麻豆视频精品| 久久99精品久久久久子伦| 国产日本在线| 一区二区在线电影| 999香蕉视频| 日韩综合久久| 日韩www在线| 中文字幕在线观看免费高清| 中文字幕人成人乱码| 欧美一级视频免费在线观看| 国产精品无码AV| 91麻豆国产香蕉久久精品| 中文字幕一区二区三区四区五区六区| 国产盗摄一区二区| 欧美视频第二页| 欧美日韩人妻精品一区在线| 欧美xxxxx视频| 91精品成人久久| 国产精品久久久久久免费| av在线不卡电影| 正在播放一区二区三区| 色网在线免费观看| 欧美一级黄色片| 性猛交娇小69hd| 一区二区福利| 99理论电影网| av电影在线观看网址| 午夜电影一区二区| 污视频在线观看免费网站| 久久99视频| 久久久久久久久中文字幕| 在线观看中文字幕av| 99久久国产综合精品女不卡| 亚洲av综合色区| 成人精品高清在线视频| 精品夜色国产国偷在线| 久久亚洲AV无码| 极品美女销魂一区二区三区 | 在线国产日韩| 亚洲综合自拍一区| 嫩草在线视频| 欧美日本一道本在线视频| 精品人妻互换一区二区三区 | 欧美女同在线观看| 亚洲深夜福利在线观看| 91精品国产沙发| 欧美一区二区三区成人片在线| 综合自拍亚洲综合图不卡区| 日本在线一二三区| 欧美日韩高清| 国产精品白嫩美女在线观看| 黄色av免费在线观看| 婷婷激情综合网| 2一3sex性hd| 9色国产精品| 久久国产手机看片| 在线天堂资源www在线污| 亚洲国产精品久久久久秋霞蜜臀| 懂色av懂色av粉嫩av| 国产一区不卡视频| 免费成人进口网站| 亚洲超碰在线观看| 欧美精品电影在线| 亚洲欧美另类日韩| 午夜电影网亚洲视频| 四虎永久免费影院| 视频在线观看一区二区三区| 日本不卡一区二区三区视频| 欧美人体一区二区三区| 国产亚洲精品激情久久| 亚洲午夜激情视频| 亚洲欧美日韩小说| 亚洲欧洲日韩综合| 亚洲精品极品| 玖玖玖精品中文字幕| 三级成人在线| 色悠悠久久88| 国产后入清纯学生妹| 亚洲一区在线播放| 国产精品嫩草av| 天使萌一区二区三区免费观看| 日韩av大全| 电影91久久久| 97国产一区二区精品久久呦| 青青青手机在线视频观看| 色域天天综合网| 亚洲女人久久久| 高清不卡一区二区| 成人免费观看毛片| 99久久久国产精品美女| 国产伦精品一区二区三区四区免费| 日本在线啊啊| 精品国产网站地址| 黄色av中文字幕| 色猫猫国产区一区二在线视频| 999久久久国产| 成人网在线播放| 国产a级片免费观看| 中文精品久久| 欧美午夜视频在线| 欧美成人精品午夜一区二区| 96精品视频在线| 国产三区视频在线观看| 日韩av中文字幕在线| 国产乱淫a∨片免费观看| 午夜视频一区在线观看| www.日本高清视频| 国产盗摄一区二区三区| 国产情侣av自拍| 欧美视频一区| 亚洲高清乱码| 羞羞答答一区二区| 91九色视频在线观看| 巨胸喷奶水www久久久免费动漫| 欧美精品在线观看| a天堂中文在线88| 日韩av在线网站| 国产三级第一页| 在线亚洲人成电影网站色www| 黄色录像一级片| 国产日产欧美一区| 91传媒理伦片在线观看| 精品一区精品二区高清| 日韩网址在线观看| 亚洲激情专区| 青草全福视在线| 久久视频精品| 日韩中文一区二区三区| 日韩大尺度在线观看| 97久久精品午夜一区二区| 91成人抖音| 欧美最顶级丰满的aⅴ艳星| 色呦呦在线视频| www.日本久久久久com.| 欧美少妇另类| 日韩精品黄色网| 国产1区在线观看| 日韩一二三区视频| jizz中国少妇| 91精品国产综合久久香蕉麻豆 | 日本不卡网站| 久久久噜久噜久久综合| 在线三级中文| 久久av.com| 老司机在线视频二区| 中文字幕日韩精品在线| 国产永久免费高清在线观看视频| 日韩成人在线观看| 在线观看xxx| 亚洲精品久久久久久久久| 国产18精品乱码免费看| 欧美www视频| 亚洲精品无码久久久| 日韩欧美在线影院| 精品国产av鲁一鲁一区| 日韩一区二区电影网| jlzzjlzz亚洲女人18| 日韩一区二区不卡| 亚洲精品一区二区口爆| 精品美女一区二区| 国产香蕉在线观看| 亚洲丁香久久久| 亚洲色图欧美视频| 亚洲人成网站色ww在线| 大胆av不用播放器在线播放| 国产亚洲在线播放| 麻豆传媒视频在线观看| 不卡av电影院| 免费不卡av| 91精品国产乱码久久久久久蜜臀 | 国产精品久久久久久久av| 国产欧美日韩不卡| 5566中文字幕| 一区二区久久久| 日韩激情在线播放| 色综合久久久久网| 成人黄色片在线观看| 欧美精品高清视频| 精品国产乱码久久久久久蜜臀网站| 日韩一二三区视频| 色哟哟在线观看| 在线播放日韩欧美| 中日韩高清电影网| 538国产精品一区二区在线| 88xx成人免费观看视频库| 国产日韩中文字幕在线| 99久久婷婷国产综合精品青牛牛| 精品国产免费一区二区三区| 欧美最新另类人妖| 在线看成人av电影| 在线欧美一区| 日本888xxxx| 国产成人8x视频一区二区| 国内精品久久99人妻无码| 国产精品乱子久久久久| www.99re7.com| 欧美午夜一区二区三区免费大片| 国产免费一区二区三区最新不卡 | 青娱乐一区二区| 欧美3p在线观看| 无码专区aaaaaa免费视频| 免费成人你懂的| 无码精品一区二区三区在线播放 | 亚洲加勒比久久88色综合| 黄色软件在线| 欧美激情视频一区二区三区不卡| 在线高清av| 亚洲综合在线小说| 国内精品久久久久久久影视简单 | 久久国产直播| 老女人性生活视频| 国产日韩欧美高清在线| 久久久久香蕉视频| 欧美视频一区二区三区| 五月天丁香视频| 欧美另类极品videosbestfree| 成人亚洲欧美| 国产精品sss| 小说区亚洲自拍另类图片专区 | 国产在线播放一区三区四| 国产中文字幕一区二区| 亚洲精品视频一区二区| 精品国产www| 亚洲理论在线a中文字幕| 免费在线看电影| 成人网中文字幕| 国产欧美日韩视频在线| 国产h视频在线播放| 国产精品白丝jk白祙喷水网站| 久久精品国产亚洲AV熟女| 亚洲男人电影天堂| 在线观看国产精品视频| 亚洲欧洲成视频免费观看| 91av久久| 国产精品久久7| 亚洲成人一区| 五月天丁香花婷婷| 欧美韩国日本不卡| 男人天堂2024| 亚洲精品一区二区三区婷婷月| 青青草视频在线免费直播| 成人做爽爽免费视频| 欧美独立站高清久久| 亚洲欧美激情网| 国产欧美日韩不卡| 中文在线字幕av| 一色桃子一区二区| 成人黄色免费观看| 亚洲午夜精品久久久久久浪潮| 日韩主播视频在线| 精品人妻无码一区二区三区换脸| 狠狠久久亚洲欧美专区| 天天干天天爽天天操| 国内精品久久久久伊人av| 懂色av一区二区| 日韩精品 欧美| 99久久精品免费看国产 | 色呦呦在线观看视频| 91免费视频网站| 欧美不卡视频| 91传媒理伦片在线观看| 亚洲地区一二三色| 午夜黄色小视频| 国产成人精品久久| 精品美女在线视频| 最新国产黄色网址| 亚洲欧美日韩电影| 亚洲成人777777| 91精品国产91久久久| blacked蜜桃精品一区| www.99av.com| 亚洲乱码日产精品bd| 亚洲va欧美va| 91av在线免费观看视频| 国产精品免费大片| wwwwwxxxx日本| 亚洲一区二区视频在线观看| 色香蕉在线视频| 国产精品99一区| 在线免费观看日本欧美爱情大片| 欧美xxxx日本和非洲| 黑人欧美xxxx| 免费观看久久久久| 国产精品一区二区三区四区五区| 美女精品在线| www.com.av| 亚洲国产欧美一区| 亚州一区二区三区| 国产制服91一区二区三区制服| 不卡区在线中文字幕| 亚洲天堂五月天| 欧美大胆在线视频| 亚洲都市激情| 日本黄色www| 欧美性极品少妇精品网站| 日本在线看片免费人成视1000| 国产91精品入口17c| 日韩av在线发布| 麻豆91精品91久久久| 亚洲性无码av在线| 视频欧美一区| www.精品在线| 午夜电影网一区| 国产视频一区二区| 欧美中日韩免费视频| 国产精品白丝av| 中文在线a天堂| 欧美在线视频一区| 在线中文字幕亚洲| 国产一二三四五区| 精品国产乱码久久久久久蜜臀| 欧美日韩尤物久久| 国产在线播放观看| 亚洲人成在线播放网站岛国| 免费av在线电影| 国产精品久久亚洲|