Creating HTML in python
I think, if i understand you correctly, you can see here, "Templating in Python".
Generate HTML/XML in Python?
Regardless of how lenient/permissive the parsing of HTML by the rendering engine is, OP is asking how to responsibly build structured text.
Here's how to do build structure with ElementTree's TreeBuilder class, it's very straight-forward:
#!/usr/bin/env python3
#!/usr/bin/env python3
import xml.etree.ElementTree as ET
builder = ET.TreeBuilder()
builder.start('p', {})
builder.data('Hello ')
builder.start('b', {})
builder.data('world')
builder.end('b')
builder.data(' how are you?')
builder.end('p')
root = builder.close() # close to "finalize the tree" and return an Element
ET.dump(root) # print the Element
For what it’s worth, I see
<p>Hello <b>world…
as being very analogous to
<para>Hello <emphasis>world…
in Docbook XML.
Generate html document with images and text within python script (without servers if possible)
Thanks for your answers, they helped me coming up with something that works for me.
In the script below I am using jinja2
to render an html file ('index.html').
from jinja2 import Template, Environment, FileSystemLoader
# Render html file
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('index.html')
output_from_parsed_template = template.render(no_users=len(users), do_stages=do_stages, users=users, message_counts=message_counts)
# to save the results
with open("OutputAnalysis.html", "w") as fh:
fh.write(output_from_parsed_template)
The html template is:
<!DOCTYPE html>
<html lang="en">
<head>
<!-- <link rel="stylesheet" type="text/css" href="styles.css"> -->
<style type="text/css">
#share-buttons img {
width: 32px;
padding: 5px;
border: 0;
box-shadow: 0;
display: inline;
}
body {
padding-left: 5px;
padding-right: 5px;
color: black;
max-width: 450px;
text-align: center;
}
</style>
<title>Your file 2016</title>
</head>
<body>
<h1>This has {{ no_users }} users:</h1>
<ul id="users">
{% for user in users %}
<li>{{user}}</li>
{% endfor %}
</ul>
{# STAGE 1 #}
{% if 1 in do_stages%}
<h1>Something worth showing</h1>
<p>
<img src="image.png" alt="caption" style="width:200px;height:200px;">
</p>
{% endif %}
{# STAGE 2 #}
{% if 2 in do_stages%}
<h1>Other header</h1>
<p>
{% for u in range(0,no_users) %}
<p>{{users[u]}} sent {{message_counts[u]}} messages.</p>
{% endfor %}
</p>
<p>
{% endif %}
<div id="share-buttons">
<!-- Twitter -->
<a href="https://twitter.com/share?url=https://stefanocosentino.com" target="_blank">
<img src="twitter_icon.png" alt="Twitter" />
</a>
</body>
</html>
The html file has the <style>
defined in the <head>
and loads from the local folder "template".
Python HTML generator
If you want programmatic generation rather than templating, Karrigell's HTMLTags module is one possibility; it can include e.g. the class
attribute (which would be a reserved word in Python) by the trick of uppercasing its initial, i.e., quoting the doc URL I just gave:
Attributes with the same name as
Python keywords (class, type) must be
capitalized :print DIV('bar', Class="title") ==> <DIV class="title">bar</DIV>
Extracting text from HTML file using Python
html2text is a Python program that does a pretty good job at this.
Generate HTML from HTML template in python?
Just use the FileSystemLoader
:
import os
import glob
from jinja2 import Environment, FileSystemLoader
# Create the jinja2 environment.
current_directory = os.path.dirname(os.path.abspath(__file__))
env = Environment(loader=FileSystemLoader(current_directory))
# Find all files with the j2 extension in the current directory
templates = glob.glob('*.j2')
def render_template(filename):
return env.get_template(filename).render(
foo='Hello',
bar='World'
)
for f in templates:
rendered_string = render_template(f)
print(rendered_string)
example.j2
:
<html>
<head></head>
<body>
<p><i>{{ foo }}</i></p>
<p><b>{{ bar }}</b></p>
</body>
</html>
How to generate a html file from a markdown inputfile through command line argument
The problem is probably with the url string. You are not formatting it. And the variables in the subprocess call are quoted.
Try This
import os, argparse,
import webbrowser
parser = argparse.ArgumentParser()
parser.add_argument('--display', dest='display', action='store_true', help='displays the md file', default=None)
parser.add_argument('--inputmarkdown', help='Provide the markdown file location')
parser.add_argument('--outputmarkdown', default="./Output", help='Provide the output display file location')
parser.add_argument('--pagetitle', dest='pagetitle', default='test display')
args = parser.parse_args()
if args.display:
subprocess.run(["pandoc", "--toc", "--standalone", "--mathjax", "-t", "html", "--simple_tables", args.inputmarkdown, "-o", args.outputmarkdown, "--metadata", f"pagetitle={args.pagetitle}"])
url = f"file://{args.outputmarkdown}"
webbrowser.open(url,new=1,autoraise=True)
Generate HTML elements automatically with python Flask
you can make two loops in total without if loops, first for loop to print the full stars X times (where X is the rating), and 2nd the half star loop for 5 - X times.
in my example the overall_rating
is the variable with value 0 to 5:
jinja template:
<pre>
{% for ii in range(1, overall_rating + 1) %}
<i class="fas fa-star"></i>
{% endfor %}
{% for ii in range(1, 5 - overall_rating + 1) %}
<i class="far fa-star"></i> <!-- Holo star -->
{% endfor %}
Edited to adjust the template more to your case
Related Topics
Passing a Matplotlib Figure to HTML (Flask)
Floating Point Math in Different Programming Languages
Interpreting a Benchmark in C, Clojure, Python, Ruby, Scala and Others
Why Is Ruby More Suitable for Rails Than Python
Deleting Multiple Elements from a List
Best Way to Find the Months Between Two Dates
Dll Load Failed Error When Importing Cv2
How to Change the Name of a Django App
How to Multiply All Items in a List Together with Python
What Does % Do to Strings in Python
Pandas Read_HTML Valueerror: No Tables Found
Plotting 3-Tuple Data Points in a Surface/Contour Plot Using Matplotlib
What Are the Python Equivalents to Ruby's Bundler/Perl's Carton
Python VS. Ruby for Metaprogramming
Difference Between Multiple If's and Elif'S
MAC Osx Python Ssl.Sslerror: [Ssl: Certificate_Verify_Failed] Certificate Verify Failed (_Ssl.C:749)