Python的字符串操作和Unicode

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

字符串类型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字节

0xxxxxxx

0x0080~0x07FF(128 ~ 2047)

2字节

110xxxxx 10xxxxxx

0x0800~FFFF(2048 ~ 65535)

3字节

1110xxxx 10xxxxxx 10xxxxxx

0x10000~1FFFFFF(65536 ~ 2097152)

4字节

11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

0x2000000~0x3FFFFFF

5字节

111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

0x4000000~0x7FFFFFFF)

6字节

1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

字节顺序标记BOMBOM是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()

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航