Table des matières
Great Books of All Time
Maison développement back-end Tutoriel Python Générez des rapports de fichiers à l'aide de la classe Template de Python

Générez des rapports de fichiers à l'aide de la classe Template de Python

Apr 13, 2023 pm 06:13 PM
python template 文件报告

Générez des rapports de fichiers à l'aide de la classe Template de Python

Introduction

Souvent, je me retrouve à devoir effectuer des tâches telles que générer des rapports, sortir des fichiers ou des chaînes. Ils suivent tous plus ou moins un modèle, et souvent les modèles sont si similaires que nous souhaitons disposer d'un modèle dans lequel nous pouvons réutiliser et alimenter directement les données. Heureusement, Python propose une classe qui peut nous aider : string.Template.

Dans cet article, vous apprendrez comment exploiter cette classe pour générer un fichier de sortie basé sur les données que vous utilisez actuellement, et comment manipuler les chaînes de la même manière. Ainsi, au lieu de simplement utiliser des exemples que vous pourriez rencontrer dans votre travail quotidien, cet article vous présente un certain nombre d'outils réels que vous connaissez probablement et qui utilisent cette classe pour générer des fichiers de rapport. Commençons !

Remarque : cet article est basé sur Python 3.9.0 (CPython). Vous pouvez trouver des exemples de code utilisés tout au long de cet article sur GitHub (https://github.com/DahlitzFlorian/generate-file-reports-using-pythons-template-class).

Avant de regarder un exemple, prenons le temps d'examiner les avantages de l'utilisation de string.Template par rapport à d'autres solutions.

1. Aucune autre dépendance n'est requise, cela fonctionne immédiatement, il n'est donc pas nécessaire d'utiliser la commande pip install pour l'installer.

2. Il est léger et, bien sûr, les moteurs de modèles tels que Jinja2 et Mako ont été largement utilisés. Cependant, dans le scénario présenté dans cet article, ces capacités sont surestimées.

3. Séparation des préoccupations : au lieu d'intégrer la manipulation de chaînes et la génération de rapports directement dans le code, vous pouvez utiliser des fichiers modèles pour les déplacer vers un emplacement externe. Si vous souhaitez modifier la structure ou la conception de votre rapport, vous pouvez échanger des fichiers modèles sans modifier votre code.

En raison de ces avantages, certaines bibliothèques et outils tiers bien connus l'utilisent. Wily en est un exemple, et fin 2018, Anthony Shaw, l'inventeur et responsable de Wily, souhaitait prendre en charge HTML comme format de sortie pour les rapports générés par Wily.

Exemple : Générer un rapport des meilleurs livres

Après avoir discuté de la motivation derrière l'utilisation de la classe string.Template intégrée à Python, nous examinerons le premier exemple pratique. Imaginez que vous travaillez pour une entreprise qui publie un rapport annuel sur les meilleurs livres publiés au cours de l'année écoulée. 2020 est une année particulière car en plus de votre rapport annuel, vous publiez également une liste des meilleurs livres jamais écrits.

À ce stade, peu nous importe d'où proviennent les données ou quels livres font partie de la liste. Pour plus de simplicité, supposons que nous disposions d'un fichier JSON appelé data.json qui contient un mappage des noms d'auteurs et des titres de livres, comme indiqué ci-dessous.

{
 "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"
}
Copier après la connexion

Votre tâche est maintenant de le partager d'une certaine manière avec d'autres (par exemple de grands magazines, des entreprises ou des blogueurs). L'entreprise a décidé qu'un simple tableau au format HTML suffirait. Maintenant la question est : comment générer ce tableau HTML ?

Bien sûr, vous pouvez le faire manuellement ou créer des espaces réservés pour chaque livre. Mais il serait très souhaitable de disposer ultérieurement d'une version plus générale, car le contenu de la liste peut être étendu ou la conception structurelle modifiée.

Nous pouvons désormais profiter de la classe string.Template de Python ! Nous commençons par créer le modèle réel comme indiqué ci-dessous. Ici, nous appelons le fichier 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>
 
 <h1 id="Great-Books-of-All-Time">Great Books of All Time</h1>
 <table >
 <thead>
 <tr>
 <th scope="col">#</th>
 <th scope="col">Author</th>
 <th scope="col">Book Title</th>
 </tr>
 </thead>
 <tbody>
 ${elements}
 </tbody>
 </table>
 
</body>
</html>
Copier après la connexion

Le document lui-même est très rudimentaire. Nous avons utilisé bootstrap pour styliser et créer la structure de base de la table finale. L'en-tête est inclus, mais les données sont toujours manquantes. Notez que dans l'élément tbody, un espace réservé ${elements} est utilisé pour marquer l'endroit où nous injecterons ultérieurement la liste des livres.

Nous nous sommes tous mis en place pour implémenter un script Python qui génère le résultat souhaité ! Par conséquent, nous créons un nouveau fichier Python nommé report.py dans le répertoire de travail actuel. Tout d'abord, nous importons les deux modules intégrés requis et chargeons les données à partir d'un fichier JSON.

# report.py
import json
import string
with open("data.json") as f:
 data = json.loads(f.read())
Copier après la connexion

Maintenant, la variable data est un dictionnaire contenant le nom de l'auteur (clé) et le titre du livre (valeur) sous forme de paires clé-valeur. Ensuite, nous générons le tableau HTML et le plaçons dans le modèle (vous vous souvenez des espaces réservés ?). Nous initialisons donc une chaîne vide et y ajoutons de nouvelles lignes de tableau comme indiqué ci-dessous.

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>"
Copier après la connexion

Cet extrait de code nous montre parcourir tous les éléments du dictionnaire de données et placer le titre du livre ainsi que le nom de l'auteur dans les balises HTML correspondantes. Nous avons créé le tableau HTML final. À l'étape suivante, nous devons charger le fichier modèle que nous avons créé précédemment :

with open("template.html") as t:
 template = string.Template(t.read())
Copier après la connexion

Notez que string.Template accepte une chaîne, pas un chemin de fichier. Par conséquent, vous pouvez également fournir une chaîne préalablement créée dans le programme sans la sauvegarder dans un fichier. Dans notre cas, nous fournissons le contenu du fichier template.html.

Enfin, nous utilisons la méthode replace() du modèle pour remplacer l'élément placeholder par la chaîne stockée dans le contenu de la variable. La méthode renvoie une chaîne que nous stockons dans la variable final_output. Enfin, nous créons un nouveau fichier appelé report.html et y écrivons le résultat final.

final_output = template.substitute(elements=content)
with open("report.html", "w") as output:
 output.write(final_output)
Copier après la connexion

现在已经生成了第一个文件报告!如果在浏览器中打开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)
Copier après la connexion

但是,如果您错过传递一个或另一个的值会怎样?它引发一个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}
Copier après la connexion

在某些情况下,这可能是一个更优雅的解决方案,甚至是必须的行为。但是这可能在其他地方引起意外的副作用。

本文概要

在阅读本文时,您不仅学习了Python字符串的基本知识。Template类以及使用它的原因,而且还实现了第一个文件报告脚本!此外,您已经了解了safe_substitution()方法以及在哪种情况下使用它可能会有所帮助。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment embellir le format XML Comment embellir le format XML Apr 02, 2025 pm 09:57 PM

L'embellissement XML améliore essentiellement sa lisibilité, y compris l'indentation raisonnable, les pauses-lignes et l'organisation des étiquettes. Le principe est de traverser l'arbre XML, d'ajouter l'indentation en fonction du niveau et de gérer les balises et les balises vides contenant du texte. La bibliothèque XML.ETREE.ElementTree de Python fournit une fonction Pretty_xml () pratique qui peut implémenter le processus d'embellissement ci-dessus.

Comment ouvrir le format XML Comment ouvrir le format XML Apr 02, 2025 pm 09:00 PM

Utiliser la plupart des éditeurs de texte pour ouvrir des fichiers XML; Si vous avez besoin d'un affichage d'arbre plus intuitif, vous pouvez utiliser un éditeur XML, tel que Oxygen XML Editor ou XMLSPY; Si vous traitez les données XML dans un programme, vous devez utiliser un langage de programmation (tel que Python) et des bibliothèques XML (telles que XML.ETREE.ElementTree) pour analyser.

La modification XML nécessite-t-elle une programmation? La modification XML nécessite-t-elle une programmation? Apr 02, 2025 pm 06:51 PM

La modification du contenu XML nécessite une programmation, car elle nécessite une recherche précise des nœuds cibles pour ajouter, supprimer, modifier et vérifier. Le langage de programmation dispose de bibliothèques correspondantes pour traiter XML et fournit des API pour effectuer des opérations sûres, efficaces et contrôlables comme les bases de données de fonctionnement.

Y a-t-il une application mobile qui peut convertir XML en PDF? Y a-t-il une application mobile qui peut convertir XML en PDF? Apr 02, 2025 pm 08:54 PM

Une application qui convertit le XML directement en PDF ne peut être trouvée car ce sont deux formats fondamentalement différents. XML est utilisé pour stocker des données, tandis que PDF est utilisé pour afficher des documents. Pour terminer la transformation, vous pouvez utiliser des langages de programmation et des bibliothèques telles que Python et ReportLab pour analyser les données XML et générer des documents PDF.

Existe-t-il un outil gratuit XML à PDF pour les téléphones mobiles? Existe-t-il un outil gratuit XML à PDF pour les téléphones mobiles? Apr 02, 2025 pm 09:12 PM

Il n'y a pas d'outil XML à PDF simple et direct sur mobile. Le processus de visualisation des données requis implique une compréhension et un rendu complexes des données, et la plupart des outils dits "gratuits" sur le marché ont une mauvaise expérience. Il est recommandé d'utiliser des outils côté informatique ou d'utiliser des services cloud, ou de développer vous-même des applications pour obtenir des effets de conversion plus fiables.

La vitesse de conversion est-elle rapide lors de la conversion du XML en PDF sur le téléphone mobile? La vitesse de conversion est-elle rapide lors de la conversion du XML en PDF sur le téléphone mobile? Apr 02, 2025 pm 10:09 PM

La vitesse du XML mobile à PDF dépend des facteurs suivants: la complexité de la structure XML. Méthode de conversion de configuration du matériel mobile (bibliothèque, algorithme) Méthodes d'optimisation de la qualité du code (sélectionnez des bibliothèques efficaces, optimiser les algorithmes, les données de cache et utiliser le multi-threading). Dans l'ensemble, il n'y a pas de réponse absolue et elle doit être optimisée en fonction de la situation spécifique.

Comment convertir XML en PDF sur votre téléphone? Comment convertir XML en PDF sur votre téléphone? Apr 02, 2025 pm 10:18 PM

Il n'est pas facile de convertir XML en PDF directement sur votre téléphone, mais il peut être réalisé à l'aide des services cloud. Il est recommandé d'utiliser une application mobile légère pour télécharger des fichiers XML et recevoir des PDF générés, et de les convertir avec des API Cloud. Les API Cloud utilisent des services informatiques sans serveur et le choix de la bonne plate-forme est crucial. La complexité, la gestion des erreurs, la sécurité et les stratégies d'optimisation doivent être prises en compte lors de la gestion de l'analyse XML et de la génération de PDF. L'ensemble du processus nécessite que l'application frontale et l'API back-end fonctionnent ensemble, et il nécessite une certaine compréhension d'une variété de technologies.

Quel est le processus de conversion de XML en images? Quel est le processus de conversion de XML en images? Apr 02, 2025 pm 08:24 PM

Pour convertir les images XML, vous devez d'abord déterminer la structure des données XML, puis sélectionner une bibliothèque graphique appropriée (telle que Matplotlib de Python) et la méthode, sélectionner une stratégie de visualisation basée sur la structure de données, considérer le volume de données et le format d'image, effectuer un traitement par lots ou utiliser des bibliothèques efficaces, et enfin les enregistrer sous le nom de PNG, JPEG, ou SVG selon les besoins.

See all articles