流程的Python 第四章:文本和字节序列

来源:互联网 发布:淘宝买家如何删除评价 编辑:程序博客网 时间:2024/05/19 06:18

前言:

       Python 2.X的版本字符问题一直给Python使用者带来麻烦,导致大家一直使用如下方式解决:

# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding('utf-8')

目录:

  1. 内容回顾
  2. 相关资料
  3. 阅读后感

正文:

一. 内容回顾
       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字符串编码及乱码解决方案

阅读全文
0 0
原创粉丝点击