流程的Python 第四章:文本和字节序列
来源:互联网 发布:淘宝买家如何删除评价 编辑:程序博客网 时间:2024/05/19 06:18
前言:
Python 2.X的版本字符问题一直给Python使用者带来麻烦,导致大家一直使用如下方式解决:
# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding('utf-8')
目录:
- 内容回顾
- 相关资料
- 阅读后感
正文:
一. 内容回顾
1.1 字符问题
一个字符串是一个字符序列,问题出在“字符”的定义上。把码位转换成字节序列的过程是编码(encode),把字节序列转换成码位的过程是解码(decode)。在编码和解码过程中就存在Unicode,UTF-8, ASCII等这些方式,导致出现问题,编码格式不一致。
1.2 字节概要
主要讲解字节的结构体和内存视图,分bytes, bytemarray, memory view, array.array。
1.3 基本的编解码器
Python自带超过100种编解码器,常见的就是utf-8, gb2313。其中gb2313用于编码简体中文的陈旧的标准,这是亚洲语言中使用较广泛的多字节编码之一。
1.4 了解编解码问题
编解码问题有3个,分别是:UnicodeEncodeError UnicodeDecodeError SyntaxError
出现编解码上述3个问题的地方主要是国际化使用,如:处理希腊文,俄文等,出现一些特殊字符。
1.5 处理文本文件
处理文本的最佳实践是:Unicode三明治
1.6 为了正确比较而规范化Unicode字符串
同上了解编码问题,主要是处理国际化字符问题,进行规范化Unicode字符串。
1.7 Unicode文本排序
文本排序主要是sorted() 和.sort()内置函数的使用。
1.8 Unicode数据库
1.9 支持字符串和字节序列的双模式API
获取系统编解码方式:locale.getpreferredencoding()、sys.getfilesystemencodeing()。
二. 相关资料
Python编码异常解决方法:
1、遵循PEP0263原则,声明编码格式(lz推荐)
2、使用u中文替代中文(py2)
3、Reset默认编码
4、终极原则:decode early, unicode everywhere, encode late
5、升级Python 2.x到3.x
解释一下 -> 终极原则:decode early, unicode everywhere, encode late:
在输入或者声明字符串的时候,尽早地使用decode方法将字符串转化成unicode编码格式;然后在程序内使用字符串的时候统一使用unicode格式进行处理,比如字符串拼接、字符串替换、获取字符串的长度等操作;最后,在输出字符串的时候(控制台/网页/文件),通过encode方法将字符串转化为你所想要的编码格式,比如utf-8等。按照这个原则处理Python的字符串,基本上可以解决所有的编码问题(只要你的代码和Python环境没有问题)。
三. 阅读后感
从接触Python开始到现在一直在使用Python 2.X版本,刚开始的接触Python的时候经常被字符串乱码受阻,现在对Python的理解深入了,遇见这些问题的时候能够很快的进行处理,Python 3.X版本解决了Python 2.X大部分因为编码产生的异常问题。
参考:
1. 可爱的 Python:Python中的文本处理
2. Python字符串编码及乱码解决方案
- 流程的Python 第四章:文本和字节序列
- 第四章 Python运算符和流程控制
- 流程的Python 第十章:序列的修改、散列和切片
- 流程的Python 第二章:序列构成的数组
- 用Python 做文本挖掘的流程
- 用 Python 做文本挖掘的流程
- 主机字节序列和网络字节序列
- 第四章 流程控制和数组
- 第四章 4-1 文本的输出
- Boost文本序列化和二进制序列化的效率
- Python编程入门-第四章 流程控制 -学习笔记
- 易语言-寻找文本和寻找字节集的区别
- 交换int中第一个字节和第四字节的值
- 主机字节序和网络字节序列
- 用 Python 做文本挖掘的基本流程
- python 之pickle模块--输出保存到文本(基本的数据序列和反序列化)
- 字节序列和ARM体系结构的存储器格式
- 字符串和编码而成的字节序列相互转换
- 数据结构学习笔记(1):基本概念
- BaseActivity基类封装
- Mybatis字段值为空时,不返回map问题
- 業務システムの開発ドキュメント標準化 第4回:詳細設計書(前半)
- 微信小程序 Node.js (基础四) 事件循环
- 流程的Python 第四章:文本和字节序列
- 解决在华为手机获取的图片列表中部分图片不能被获取到
- sublime复制/交换当前行和代码移动
- Loadrunner 获取ResponseBody,并去除乱码打印出来
- java io流中为什么要序列化和反序列化
- JavaScript编译
- Maven项目中pom文件分析
- Python Random模块使用
- java实现选择排序