Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
寻找更好的Python 3.x+;在一个函数中构建多个不同HTML的方法_Python_Html_Python 3.x - Fatal编程技术网

寻找更好的Python 3.x+;在一个函数中构建多个不同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

我已经编写了一个函数,它接受一个具有多个值的dict。它的功能类似于“邮件合并”,将dict中的值插入HTML中的不同位置。然后,所有HTML都返回到另一个字典中

这对于长HTML文件不是很有效。我正在寻找一种更好的方法,将20+个值插入到一个可能有100行长的HTML中

下面提供了一个简化版本,显示了低效的方法

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