Python3输出到html写文件需注意,出现前缀b'

    def output_html(self):
        fout=open('output.html','w',encoding='UTF-8', newline='')
        fout.write('<html>')
        fout.write('<head>')
        fout.write('<meta charset = "UTF-8"/>')
        fout.write('</head>')
        fout.write('<body>')
        fout.write('<table>')

        for data in self.datas:
            fout.write('<tr>')
            fout.write('<td>%s</td>' % data['url'])
            fout.write('<td>%s</td>' % data['title'])
            fout.write('<td>%s</td>' % data['summary'])
            fout.write('</tr>')

        fout.write('</table>')
        fout.write('</body>')

        fout.write("</html>")

要注意open方法,还有指定网页的编码格式为utf-8,否则会出现字符串b前缀和编码错误


UnicodeEncodeError: 'gbk' codec can't encode character '\u02c8'


要将Python2.x项目迁移至Python3.x,您可以按照以下步骤操作: ### 准备阶段 确保您有最新版本的`pip`工具用于安装软件包,并熟悉您的项目的依赖关系。 ```python # 更新 pip 到最新的稳定版 python -m pip install --upgrade pip setuptools wheel ``` 确认您的环境中已正确配置了 Python 2 和 Python 3 的环境(如果同时存在)。这有助于避免混淆或错误地使用旧版库文件。 ### 分析现有代码 检查整个应用程序及其所有模块是否兼容于Python 3。对于第三方库,请查阅官方文档了解其对新语言的支持情况;而对于自有代码,则可以通过运行自动化测试用例来进行初步验证。 #### 使用 `modernize` 工具进行分析: ```bash pip install modernize cd your_project_directory/ modernize . ``` 该命令会遍历目录下的`.py`源码并输出建议修改的地方,但不会直接更改原文件. #### 或者尝试使用 `futurize`(来自`future`库) 提供更激进的方式转换为支持Pythoon2/3双版本的程序 : ```bash pip install future cd your_project_directory/ futurize --stage1 --write . # 注意此命令会对实际文件造成影响!请先备份再执行. ``` 这两个工具都基于[lib2to3](https://docs.python.org/library/lib2to3.html), 它们不仅能够指出需要调整之处还能自动修复一些常见的不兼容问题. ### 修改代码适应变化的关键点包括但不限于以下几个方面: * **print语句** 变成函数形式(`print()`代替原来的`print x`) ```diff print "Hello world" + print("Hello World") ``` * 字符串类型由默认ASCII转为了unicode,默认字符串即代表Unicode文本,在编码处理上有所区别。 * 对应到具体的改动就是去除掉前缀&#39;u&#39;标识以及适当添加b标记二进制字节序列 ```python u"some string" -> "some string" b&#39;some bytes&#39; ``` * 整除运算符号 `/` 行为改变(现在返回浮点结果),如果你确实希望得到整数结果可以显式指定使用 `//`. ```python from __future__ import division result = 7 / 5 # 结果为 float 类型 (约等于 1.4) int_result = 7 // 5 # 明确表示求商取整的结果 (=1) ``` * 迭代器协议变动——例如dict.keys(), dict.values()等方法不再返回列表而是可迭代对象(dict_keys/dict_values). 如果你需要获取list则必须主动调用 list 构造器转化一下: ```python my_dict = {&#39;a&#39;: 1} keys_list_py2 = my_dict.keys() values_list_py2 = my_dict.values() keys_list_py3 = list(my_dict.keys()) values_list_py3 = list(my_dict.values()) ``` * 异常捕获语法更新——从as后面去掉了逗号: ```python try: raise Exception(&#39;An error occurred.&#39;) except IOError as e: # Py3+ pass # versus except IOError,e : # Py2 only pass ``` --- 除此之外还应当关注其他API层面的变化比如内置标准库重组、移除了某些过时功能等等。完整的差异清单可以在 [What’s New In Python 3.0](https://docs.python.org/3.0/whatsnew/3.0.html) 文档找到详细信息。 完成上述过程后再次全面回归测试以保证没有遗漏重要细节之后就可以正式部署新版应用啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值