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

本文详细探讨了Python中的字符问题,包括编码与解码过程中的Unicode、UTF-8、ASCII等。文章阐述了字节的结构、常见的编解码器如utf-8和gb2313,并提供了处理编解码错误的方法,如UnicodeEncodeError和UnicodeDecodeError。此外,还介绍了处理文本文件的最佳实践、Unicode字符串的规范化以及文本排序。对于解决Python 2.x编码异常,文章提出了终极原则:decode early, unicode everywhere, encode late。" 100097960,8826614,Vue与Coreui实现table多选checkbox,"['Vue', '前端开发', 'Coreui', '表格', '组件']
摘要由CSDN通过智能技术生成

前言:

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

# -*- coding:utf-8 -*-
import sys

reload(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字符串编码及乱码解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值