python3编码问题(网络流数据写入到本地出错问题)
来源:互联网 发布:淘宝联盟转链工具 编辑:程序博客网 时间:2024/06/10 16:14
目录
- 目录
- 1python3两种编码类型
- 2图解py3一切编码问题
- 3实例网络爬取数据写入到txt问题
- 就到这里
1、python3两种编码类型
记住:在python3中只有两种字符格式,**str类型和bytes类型**。str类型:即常见的str字符,py3中默认所有的字符串都为Unicode编码格式;bytes类型:即字节字符,除过unicode格式的字符串外,其他都为bytes类型。
>>>a='姚明'>>>type(a)<class 'str'>>>>type(a.encode('utf-8'))<class 'bytes'>>>>type(a.encode('gbk'))<class 'bytes'>>>>type(a.encode('gb2312'))<class 'bytes'>
2、图解py3一切编码问题!!!
需求:有一个外部数据,需要加载到python中,并最终写入到本地txt中。
三个主体:外部数据,python解释器,本地文件。
1. str-->bytes,相当于编码过程encode()2. bytes-->str,相当于解码过程decode()
注意:py3中的所有编码问题,无非就是encode()与decode()。思路:在python解释器中,所有的字符都是unicode格式,人们可以正常查看不乱码,外部数据进入到python中,必须先进行解码decode(),使其转换为py3中默认的unicode格式;当将此数据写入到本地txt中时,就需要根据txt的编码格式,将数据编码为txt编码格式。
3、实例:网络爬取数据写入到txt问题
个人环境:python3.5,WIN7 64位
将爬取到豆瓣影评数据写入到本地txt中,定义函数write_txt:
# eachCommentList为爬取的影评数据,list格式,每个元素为一个影评def write_txt(eachCommentList, filename): filepath = "E:\\untitled\\practice\\" output = open(filepath + "%s.txt" % filename, "a") # a表示在结尾写入 for i in range(len(eachCommentList)): output.write(str(i) + ": " + eachCommentList[i] + "\n") output.close()
1、执行write_txt(eachCommentList, 'data1'),错误如下:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 9: illegal multibyte sequence##原因分析:在windows下面,新文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的网络数据流txt,然而txt此时已经是decode过的unicode编码,这样的话就会导致解析不了,出现上述问题。因为py3头文件明确了编码格式为utf-8,所以,也要将目标文件的编码格式设置为utf-8。##解决的办法:改变目标文件的编码:output = open(filepath + "%s.txt" % filename, "a", encoding='utf-8')
2、出现can't concat NavigableString to str错误:解决办法:则将字符串强制转化为str,采用str(chacter): t = str(eachCommentList[i]) output.write(str(i) + ": " + t + "\n")
##改进后,完整代码如下:def write_txt(eachCommentList, filename): filepath = "E:\\untitled\\practice\\" output = open(filepath + "%s.txt" % filename, "a", encoding='utf-8') # a表示在结尾写入 for i in range(len(eachCommentList)): t = str(eachCommentList[i]) output.write(str(i) + ": " + t + "\n") output.close()
就到这里…
若有错误,请帮忙指出。
蹄疾步稳,切地而行,以行践言!—zlg358
阅读全文
0 0
- python3编码问题(网络流数据写入到本地出错问题)
- 网络传输数据出错问题
- python3 编码问题
- Python3 字符编码问题
- python3编码问题
- Python3的编码问题
- python3的编码问题
- 编码问题-python3
- python3编码问题
- python3 windows 编码问题
- Python3编码问题
- python3中文编码问题
- python3 的编码问题
- 计算机编码问题python3
- Python3的编码问题
- python 编码出错问题
- python3 导入本地 package 问题
- 关于python3.x读取写入文件时编码报错问题
- java 判断字符串编码类型
- tomcat请求处理分析(一) 启动container实例
- Binder听课记录
- 【OpenGL】着色器 Shader
- css之表格
- python3编码问题(网络流数据写入到本地出错问题)
- kaldi学习第三天
- PyQt5的多线程
- html定义列表
- 高德地图实现定位
- React-Native中导航组件react-navigation的使用
- GPIO操作
- html的class和id
- 执行环境 & 作用域 & 闭包