Python培训
400-996-5531
这两天进行网抓,被python的编解码问题搞得一脸懵比,虽然网上能够搜到各种各样的解决方案,不乏从原理到实践的精品,然而似乎却并不奏效,经自行摸索,本文特针对编解码问题,作以下最简单却最实用的总结:
写入和读取文件时,编解码方式一定要成对。
比如,如果使用json.dump写入文本,那么读取时,请务必用json.load,否则即使后期实用各种方法折腾,依旧很可能无法正确解码json格式文本。
同样,如果使用普通方法写入文本时,指定了编码方式,那么在读取文件时,务必显式指定同样的编码方式:
#写入文本时指定utf-8编码
with open('html_file','a',encoding='utf-8') as f:
f.write(response.text)
#读取时仍旧显式指定utf-8编码
with open(file_name,'r',encoding='utf-8') as f:
html=f.read()
虽然python3号称默认编码为utf-8,实际上如果不显示指定,并不好使,比如以上以普通方式写入文本时,如果不显式指定utf-8,那么写入的文本可为乱码。相应的,如果写入时指定utf-8格式,读取时未显式指定,python显然并没有默认utf-8编码,而是根据文件内容进行猜测,如果检测到中文,它很可能用'gbk'之类的编码进行编解码并报错。
此外,使用中发现,若先后将若干个html网页内容以json格式保存在同一个txt文件中,json会出现解码错误,分别保存的时候则无错误,由此倒可以推断json在进行文本解析的时候对有些特殊字符会出现误析,与其后期再对json格式的文件进行容错处理,新手不如老老实实使用普通的读写方式,反而不容易出错。
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved