其实字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。下面这篇文章主要给大家介绍了python中的字符串操作和编码unicode详解的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
本文主要给大家介绍了关于 python中的字符串操作和编码unicode的一些知识,下面话不多说,需要的朋友们下面来一起学习吧。
字符串类型
str:unicode字符串。采用”或者r”构造的字符串均为str,单引号可以用双引号或者三引号来代替。无论用哪种方式进行制定,在python内部存储时没有区别。
bytes:二进制字符串。由于jpg等其他格式的文件不能用str进行显示,所以才用bytes来表示,bytes的每个字节为一个0-255的数字。如果打印的时候,python会把能够用ascii表示的部分显示为ascii,这样方便阅读。bytes几乎支持除了格式化以外的所有str的方法,甚至包括了re模块
bytearray() :二进制可原地变动的字符串。
utf-8编码范围
范围字节数存储格式0x0000~0x007f (0 ~ 127)1字节0xxxxxxx0x0080~0x07ff(128 ~ 2047)2字节110xxxxx 10xxxxxx0x0800~ffff(2048 ~ 65535) 3字节1110xxxx 10xxxxxx 10xxxxxx0x10000~1ffffff(65536 ~ 2097152)4字节11110xxx 10xxxxxx 10xxxxxx 10xxxxxx0x2000000~0x3ffffff5字节111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx0x4000000~0x7fffffff) 6字节1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
字节顺序标记bom
bom是byte order marker的缩写,
指定编码写入时的规则
python在使用’utf-8’编码写入文件时不会写入bom头,但是如果指定编码’utf-8-sig’则会迫使python写入一个bom头。
使用’utf-16-be’不会写入一个bom头,但是采用’utf-16’则会写入一个bom头。
>>> open(‘h.txt’,’w’,encoding=’utf-8-sig’).write(‘aaa’)
3
>>> open(‘h.txt’,’rb’).read()
b’\xef\xbb\xbfaaa’
>>> open(‘h.txt’,’w’,encoding=’utf-16′).write(‘bbb’)
3
>>> open(‘h.txt’,’rb’).read()
b’\xff\xfeb\x00b\x00b\x00′
>>> open(‘hh.txt’,’w’,encoding=’utf-16-be’).write(‘ccc’)
3
>>> open(‘hh.txt’,’rb’).read()
b’\x00c\x00c\x00c’
>>> open(‘h.txt’,’w’,encoding=’utf-8′).write(‘ddd’)
3
>>> open(‘h.txt’,’rb’).read()
b’ddd’
读取时的规则
如果指定了正确的编码,那么bom会忽略,否则bom会显示为乱码或者返回异常。
>>> open(‘h.txt’,’r’).read()
‘锘縟dd’
>>> open(‘h.txt’,’r’,encoding=’utf-8-sig’).read()
‘ddd’
编码与解码
chr和ord
>>> ord(‘中’) #20013
>>> chr(20013) #’中’
把unicode硬编码进字符串中。
‘\xhh’:用2位十六进制来表示一个字符
‘\uhhhh’:用4位十六进制来表示一个字符:
‘\uhhhhhhhh’:用8位十六进制来表示一个字符
>>> s = ‘py\x74h\u4e2don’ #’pyth中on’
str和bytes, bytearray进行转换
str.encode(encoding=’utf-8′)
bytes(s,encoding=’utf-8′)
bytes.decode(encoding=’utf-8′)
str(b, encoding=’utf-8′)
bytearray(string, encoding=’utf-8′)
bytearray(bytes)
文档编码声明
python默认使用utf-8编码。
# -*- coding: latin-1 -*- :表示声明文档为latin-1编码。
帮助函数
sys.platform #’win32′
sys.getdefaultencoding() # ‘utf-8′
sys.byteorder #’little’
s.isalnum() #s表示字符串
s.isalpha()
s.isdecimal
s.isdigit()
s.isnumeric()
s.isprintable()
s.isspace()
s.isidentifier() #如果字符串可以用作变量名,那么返回true
s.islower()
s.isupper()
s.istitle()
更多python中的字符串操作和编码unicode详解相关文章请关注php中文网!