使用变量字符串将多行保存到html文件

时间:2017-11-08 20:19:10

标签: python html

我在python中有一些函数,只需要几个字符串,并且应该使用一个更大的字符串连接它们,这个字符串应该是一个html文件。

def manzy(product_name, product_image, product_price_new, product_price_before):
a = """  <!DOCTYPE html>
            <html>
              <head>
                <meta charset="UTF-8">
                <title>title</title>
                    <link rel="stylesheet" type="text/css" href="maincss.css">
              </head>
              <body>

                    <div class="shop-card">
                      <div class="title"> """ + product_name + """ </div>


                      <div class="desc">
                            Womans cloath
                      </div>
                      <div class="slider">
                            <figure data-color="#E24938, #A30F22 "> 
                              <img src=""" +  product_image + """/>
                            </figure>
                      </div>

                      <div class="cta">
                            <div class="price"> """ + product_price_new + """</div><br>
                            <div class="price"> """ + product_price_before + """</div>

                      </div>
                    </div>
                    <div class="bg"></div>

            </div>

              </body>
            </html> """

Html_file= open("filename","w")
Html_file.write(a)
Html_file.close()

当我运行代码时,文件被创建,然后我收到错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe7' in position 400: ordinal not in range(128)

我已经阅读了关于这个主题的几个主题,我担心我的错误与使用这个字符串混乱加入函数参数有关。但是,这个错误没有说明我弄乱字符串的格式,也许有什么东西可以用呢?

1 个答案:

答案 0 :(得分:0)

问题是Python(在版本3之前,根据我自己的测试),不喜欢UTF-8用于输出,因此默认情况下你使用ASCII

a = u'\xe7'
print(a) # Throws the error on Python 1 and 2, works fine on Python 3

以下是测试:Python 1Python 2Python 3

无论如何,你应该能够做到这样的事情:

Html_file.write(a.encode('utf-8'))

以下是print使用此修复程序的测试:Python 1Python 2