寻找更好的Python 3.x+;在一个函数中构建多个不同HTML的方法
我已经编写了一个函数,它接受一个具有多个值的dict。它的功能类似于“邮件合并”,将dict中的值插入HTML中的不同位置。然后,所有HTML都返回到另一个字典中 这对于长HTML文件不是很有效。我正在寻找一种更好的方法,将20+个值插入到一个可能有100行长的HTML中 下面提供了一个简化版本,显示了低效的方法寻找更好的Python 3.x+;在一个函数中构建多个不同HTML的方法,python,html,python-3.x,Python,Html,Python 3.x,我已经编写了一个函数,它接受一个具有多个值的dict。它的功能类似于“邮件合并”,将dict中的值插入HTML中的不同位置。然后,所有HTML都返回到另一个字典中 这对于长HTML文件不是很有效。我正在寻找一种更好的方法,将20+个值插入到一个可能有100行长的HTML中 下面提供了一个简化版本,显示了低效的方法 def build_html(mail_data): html_to_convert = {} for data in mail_data: ex
def build_html(mail_data):
html_to_convert = {}
for data in mail_data:
export_html = '<html><head><title>'
export_html += str(data['html_header'])
export_html += '</title></head><body>'
export_html += str(data['html_body'])
export_html += '</body></html>'
html_to_convert[str(data['unique_id'])] = export_html
return html_to_convert
def build_html(邮件数据):
html_to_convert={}
对于邮件数据中的数据:
导出html=“”
export_html+=str(数据['html_header'])
导出_html+=“”
导出html+=str(数据['html\u body'])
导出_html+=“”
html_to_convert[str(数据['unique_id'])]=export_html
返回html\u到\u转换
您可以尝试使用字符串格式,而不是串联:
def build_html(mail_data):
html_to_convert = {}
for data in mail_data:
export_html = '<html><head><title>%s</title></head><body>%s</body></html>' % (str(data['html_header']), str(data['html_body']))
html_to_convert[str(data['unique_id'])] = export_html
return html_to_convert
def build_html(邮件数据):
html_to_convert={}
对于邮件数据中的数据:
导出html=“%s%s%”(str(数据['html\u头']),str(数据['html\u体']))
html_to_convert[str(数据['unique_id'])]=export_html
返回html\u到\u转换
另外,如果数据不是字符串,而不是将其转换为字符串,则可以使用正确的格式标志来加快速度。HTML模板的基本代码
如果需要,将其写入本地驱动器
基于另一个答案-您可以将格式字符串带到函数外部,因为每次都是相同的。另外,我建议使用
.format
,而不是%
。您可以像这样使用.format
:
BUILD_FORMAT = '<html><head><title>{0[html_header]}</title></head><body>{0[html_body]}</body></html>'
def build_html(mail_data):
html_to_convert = {}
for data in mail_data:
export_html = BUILD_FORMAT.format(data)
html_to_convert[str(data['unique_id'])] = export_html
return html_to_convert
BUILD_FORMAT='{0[html_header]}{0[html_body]}'
def构建html(邮件数据):
html_to_convert={}
对于邮件数据中的数据:
export\u html=BUILD\u FORMAT.FORMAT(数据)
html_to_convert[str(数据['unique_id'])]=export_html
返回html\u到\u转换
这导致实际上不必为html构建手动调用str
。然而,我不认为真的有任何方法可以让你的代码运行得更快——如果这个循环是必要的,你就不能大大提高你的运行时间,尽管我对周围的环境了解不够,不能提出太多建议
soup = Soup(html, 'lxml')
new_tag = soup.new_tag('h2', id='This is a header tag')
soup.div.append(new_tag)
new_tag.string = "Add some text to the h2"
# Write html local hard drive
with open('updated.html', 'w', newline='') as f:
f.write(str(soup))
BUILD_FORMAT = '<html><head><title>{0[html_header]}</title></head><body>{0[html_body]}</body></html>'
def build_html(mail_data):
html_to_convert = {}
for data in mail_data:
export_html = BUILD_FORMAT.format(data)
html_to_convert[str(data['unique_id'])] = export_html
return html_to_convert