Python编码记录
作者:@houkai
本文为作者原创,转载请注明出处:https://www.cnblogs.com/houkai/p/5403268.html
字节流和字符串
当使用Python定义一个字符串时,实际会存储一个字节串:
"abc"--[97][98][99]
python2.x默认会把所有的字符串当做ASCII码来对待,但是当字节值>127时,默认解析便会出现问题。
x="abc"+chr(150) print repr(x) #'abc\x96' u"Hello" + x #UnicodeDecodeError: 'ASCII' codec can't decode byte
这就需要我们拿到一个字节流后,调用它的解码方式来创建字符串(Unicode对象)
x="abc\x80\x93" x=x.decode("utf-8") print type(x) <type 'unicode'> y= "abc"+char(150) y=y.decode("windows-1252") print type(y) <type 'unicode'> print x+ y #abc-abc-
codecs模块
在处理字节流的时候可以提供很大的帮助。你可以用定义的编码来打开文件并且你从文件里读取的内容会被自动转化为Unicode对象,也可以以指定编码处理Unicode对象然后写入到文件。
import codecs f=codecs.open('0.txt', 'w', 'utf-8') f.write(u"\u2013") f.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架