位置: 编程技术 - 正文
推荐整理分享快速入手Python字符编码(python字号),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:python文字输入,怎样用python写字,python字号,python文字教程,python字号,python怎么写字,python怎么写字,python文字教程,内容如对您有帮助,希望把文章链接给更多的朋友!
前言
对于很多接触Python的人而言,字符的处理和语言整体的温顺可靠相比显得格外桀骜不驯难以驾驭。
文章针对Python 2.7,主要因为3对的编码已经有了很大的改善并且实际原理一样,更改一下操作命令即可。
了解完本文,你可以轻松解决文字处理,特殊平台(Windows)下的编码,爬虫编码等问题。
阅读建议
本文分为如下几个部分:
1.原理
2.具体操作
3.建议的使用习惯
4.疑难问题解答
如果想要了解我给出的使用习惯,可以直接跳到建议的使用习惯。
如果只想要解决相关问题可以直接跳到疑难问题解答。
希望本文能够帮到你。
原理
为了理解方便,这里不谈理论只做类比,具体想要进一步了解各种编码的理论的百度一下好了。
首先说一下我们为什么会碰到各式各样的编码问题:
1.因为我们没有统一编码
2.因为我们没有用对命令(传对数据)
再说一下编码是什么,Python的编码看似复杂,实际上可以看做只有两类编码:Unicode,二进制
1.Unicode 相信都很熟悉:,就是u这样的
2.二进制编码也很简单,就是xx这样的,平常看到的utf-8,cp都是二进制编码
3.二进制编码是具象的,原样就可以存储,而Unicode是抽象的,不能这样存
再说怎么做,就是只有同种编码之间才可以操作
举个简单的类比
就把一串数据比为烤鸭,我们作为人和鸭子不同种看待烤鸭的态度完全不一样。
我们看到的是晚上的配菜,鸭子看到的是自己二舅。
那么我在逛烤鸭店的时候用错编码就会报错。
因为我在烤鸭店看到了满世界的二舅。
这里说的同种就是我们熟悉的各种编码方式:utf-8,unicode,ucs-bom
这也就是编码问题的核心,非常重要。
最后说一下Python的环境
1.本身代码是用Ascii解码的,文件里有Ascii无法解码的内容的话要告知Python怎么解码
2.内部大量命令都是默认接受Unicode
具体操作
拿到各种编码的内容自然是不用说,那么如果我们想要自己构造怎么做呢,看下面:
那么他们之间怎么转换呢,同样很简单:
那么怎么样会出现问题呢:
所以我们需要确定程序使用的编码,这是我们需要告诉程序的东西
1.一方面在操作字符串的时候确定是同种编码
2.另一方面在使用非自己写的命令时,一般使用Unicode,或者使用接收二进制编码的命令
我建议的使用习惯
相信到这里我已经把我对于编码的理解讲完了。
我们为什么会碰到各式各样的编码问题:
1.因为我们没有统一编码
2.因为我们没有用对命令(传对数据)
所以这里再重申一下八字真言:确定编码,同类交互
1.碰到问题,问一下自己,我现在是哪种编码
2.同一种编码才能交互,那我应该是哪种编码
这里给出我的使用习惯:
1.确定一种内部编码
2.内部编码的选择优先级如下:程序必须使用的编码、第三方包使用的编码、你喜欢的编码、Unicode
3.在输出时再更改到特定的编码
记得在开始整个程序之前确定内部的编码,否则编码一团糟会产生很多不必要的bug。
不要迷信内部Unicode,例如Evernote开发就应该根据第三方包使用的Utf8确定内部编码。
疑难问题解答
编码识别
说了要确定编码,那么拿到一串二进制要怎么确定编码呢?
最简单的方法是chardet:(需要安装)
使用非常简单:
另外例如抓取网站,那么头文件中很有可能有提示如何解码,记得不要忘记了。
编码转换
很可能因为字符串中参杂了奇怪的东西,导致即使编码种类正确,依旧无法解码。
我知道我之前讲过了,但可能有人直接跳疑难问题解答嘛。
这里可以使用decode的第二个参数:
特殊平台下编码
很多人都说Windows是个坑,即使在Python 3下面也一样。
因为中文文件名出来都是乱码。
这里使用一个取巧的方法:平台编码再特殊,起码命令行读取和创建一个文件夹不会出乱码吧。
同样的输入输出也可以这样做优化:
文件写入
如果抓下来一个内容不知道怎么解码,但还是想要写入文件怎么办
写入文件的时候制定用二进制命令即可:
裸Unicode字符
Unicode存成六个Ascii字符怎么办?其实也可以decode
总结
标签: python字号
本文链接地址:https://www.jiuchutong.com/biancheng/386249.html 转载请保留说明!友情链接: 武汉网站建设