【python3自学笔记3】—字符串和编码
来源:互联网 发布:plm软件占有率 编辑:程序博客网 时间:2024/06/02 06:29
时间:2016.10.19
摘录自:廖雪峰python3.5教程
内容:字符串和编码
目录:
一、字符编码的发展
二、Python的字符串
正文:
一、字符编码的发展
美国人在发明计算机编码时只将大小写英文字母、数字和一些符号共127个字母编码到计算机中,称为ASCAII编码。最早的计算机以8个比特为一个字节,所以一个字节能表示最大的整数是255。显然,在处理汉字的时候一个字节是远远不够的。为了对汉字进行编码,并且汉字编码还不与ACSII码重复,中国制定了GB2312编码。不单是中国,世界上其他国家都制定了自己的编码标准,就不可避免的出现重复,导致在多语言混合的文本中出现乱码。为了解决这个问题国际组织制定了Unicode把所有的语言都统一到一套编码中,俗称统一码、万国码。
ASCAII码和Unicode码之间的区别是:ASCII码只占一个字节,Unicode通常为两个字节,生僻字可能需要4个字节。在ASCAII码字符前补0就能够转换为同样字符含义的Unicode码。
如果都使用英文进行编码时,Unicode编码比ASCII编码多一倍的存储空间,所以出现了将Unicode编码转换为可变长编码的UTF-8编码。UTF-8将字符编码为1-6个字节,常用的英文字母被编码成1个字节,汉字通常为3个字节,很生僻的字符被编码为4-6个字节,所以对于纯英文字符文本,UTF-8编码节省了大量的空间。
ASCII编码实际上成为了UTF-8编码的一部分,因此,大量只支持ASCII编码的软件可以在UTF-8编码下继续工作。
计算机系统通用的字符编码工作方式:在计算机内存中统一使用Unicode编码,当需要保持到硬盘或者需要传输的时候,就转换为UTF-8编码。用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存中,编辑完成保存的时候再把Unicode转换为UTF-8保存到文件。
二、Python的字符串
在Python3中,字符串以Unicode编码,也就是说Python的字符串支持多语言。
ord()函数获取单个字符的整数表示,ord(‘A’)回车 65
chr()函数将整数转换为对应的字符,chr(‘66’) 回车 ‘B’
若知道某个字符的16进制整数,可以通过'\uXXXX'表示该字符。例如'\u0041' 回车 ‘A’
Python中str为Unicode编码,如需在网络上传输或者保存到磁盘上,就需要把str转换成以字节为单位的bytes。
bytes类型的数据用b前缀的单引号或者双引号表示,若x = b‘ABC’
以Unicode表示的str可以通过encode()转换为其他编码,‘ABC’.encode(‘ascii’)回车 b‘ABC’
要从网络或者磁盘上读取字节流就需要将bytes通过decode()转变成str,b‘ABC’.decode(‘ascii’)回车 ‘ABC’
计算字符串含有多少字符,len(‘ABC’)回车 3;len(‘中文’)回车 2
在操作字符串时,为了避免乱码,应当始终坚持使用UTF-8编码对str和bytes进行转换。
在保存源代码是 ,需要指定保存为UTF-8编码。注:确保文本编辑器正在使用UTF-8 withoutBOM编码。除此之外,当Python解释器读取源代码时,为了让它按UTF-8编码,通常在文件开头写上一下两行:
#!/usr/bin/env python 3
# -*- coding: utf-8 -*-
第一行注释为了告诉Linux/OS X系统,这是一个Python程序,Windows系统会忽略这个注释。
第二行注释为了告诉Python解释器,按照UTF-8编码读取源代码。
格式化字符串:字符串中间的一部分内容根据变量变化。使用方法:用占位符%X作为变量加入到字符串中,在字符串后面用%(变量)。常见的占位符有%d整数%f浮点数%s字符串%x十六进制整数
>>>'hello,%s'%chen!"
格式化整数和浮点数还可以指定显示位数、是否补0和整数和小数的位数。
如果你不太确定变量的类型,可以用%s表示,它会把任何类型的数据转换为字符串。
当%只是一个普通的百分号是需要用%%表示。
- 【python3自学笔记3】—字符串和编码
- Python3学习笔记-字符串和编码
- 我的python3基础笔记之 【字符串和编码】
- Python3 基础:字符串和编码
- 【Python3自学笔记6】—使用dict和set
- 【python3自学笔记1】—Python简介
- 【python3自学笔记2】—基本语法
- 【Python3自学笔记4】—Python内置的有序集合list和tuple
- python3字符串编码
- Python学习笔记—字符串和编码
- 爬虫自学笔记(Python3.6.1)
- 【Python3自学笔记5】—条件判断与循环
- 【Python自学】03.字符串和编码(上)
- 【Python自学】04.字符串和编码(下)
- 【学习笔记】字符串和编码
- Python2和Python3之间关于字符串编码处理的差别
- python3 中字符串编码问题
- python3的字符串编码问题
- 01_Android应用开发环境_05_签名android应用程序
- Quartz定时任务执行两遍的解决办法
- CocoaPods公有库
- 经典网络站点、论坛、博客
- 02_Android应用界面编程_01_视图(View)组件
- 【python3自学笔记3】—字符串和编码
- Decorrelating Semantic Visual Attributes by Resisting the Urge to Share 论文笔记
- 如何讲man帮助手册改成中文的
- JS实现的文本框内容发生改变立马触发事件简介
- 211. Add and Search Word - Data structure design
- android中对u盘以及tf卡插入的广播监听
- .NET使用OpenSSL生成的pem密钥文件
- Spoken Attributes: Mixing Binary and Relative Attributes to Say the Right Thing 论文笔记
- 携程移动端架构演进与优化之路