您的位置:首页 > 编程语言 > Python开发

python程序设计第8课第四章Unicode与字符串

2020-05-11 04:12 141 查看

本节课主要就是复习上节课内容,内容不多

*一个比较有意思的现象
>>>s='中'
>>>type(s)
<type 'str'>
>>>unicode(s,encoding='ascii')    出错
>>>unicode(s)                     出错
>>>unicode(s,encoding='utf-8')

出错,为什么?
>>>s='中'
>>>s
'\xd6'                            只有一个字节,不是一个合法经utf-8编码后的byte-string

>>>s1=u'中'
>>>s2=s1.encode('utf-8')
>>>type(s2)
<type'str'>
>>>s
'\xd6'
>>>unicode(s2,encoding='utf-8')
u'\xd6'                            这样就可以

>>>s='中'
>>>unicode(s,encoding='latin-1')
u'\xd6'                           可见python默认编码方式不是utf-8,是latin-1
8.理解python2.7中str和unicode的区别

*编码和解码方式要一致
二者引号前是否有前缀u是书写,表示时的表象,str与unicode更本质的区别是str表示8位文本(8-bit string)和二进制数据。unicode表示Unicode文本(Unicode string)。str对象是一个"byte序列"(sequence of bytes );而unicode对象是"character序列"(sequence of characters),也可理解为sequen
ce of code-points。 character或其在Unicode中的表示形式code point只是概念上的东西。计算机存储,传输信息需要以byte形式进行,因此需要对unicode对象进行编码

9.在python2.7的源代码中使用非ascii字符

*前面加u表示unicode string,\x加两位16进制代表code point,\u加四位十六进制,\U加八位十六进制

*在python2.7源代码中使用非ascii字符,必须要声明把encoding改成utf-8,即# - * -coding:utf-8 - * -,python3不需要,python3默认encoding就是utf-8

10.读/写Unicode数据

虽然前面讲到了.encode()和.decode()方法,unicode()内置函数。但是你在真正写程序的时候你不用调用这些函数和方法,而是应该使用codecs的模块

*import codecs自己去学习下PPT,实验一做题要用到

八,python3.5与Unicode

(讲的很快,但是2与3的区别一定会考)

不再有unicode类型,Python3.5中的str类型就相当于Python 2.7中的unicode类型。类型str变成了bytes(存储byte串),unicode则变成了str,默认编码由ascii变成了utf-8

*因此str对象没有decode()方法了,bytes有decode()方法

*定义byte时前面要加b,以提醒这是个字节序列

九,正则表达式

(这个不考,自己看看)

番外:如何确定你系统中的python使用的默认编码

sys.stdin.encoding sys.stdout.encoding

sys.getdefaultencoding()
可以查看当你的unicode函数不指定encoding的时候,它使用什么encoding

什么是cp936?

就是gbk的别名,GB18030和GB2312自己回去看看,应该不考

编辑于2020-4-5
修改于2020-4-26 9:19

CS_Lee_ 原创文章 16获赞 0访问量 2300 关注 私信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: