源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Python中的字符串操作和编码Unicode详解

  • 时间:2020-02-26 05:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Python中的字符串操作和编码Unicode详解
本文主要给大家介绍了关于 Python中的字符串操作和编码Unicode的一些知识,下面话不多说,需要的朋友们下面来一起学习吧。 [b]字符串类型[/b] [code]str[/code]:Unicode字符串。采用''或者r''构造的字符串均为str,单引号可以用双引号或者三引号来代替。无论用哪种方式进行制定,在Python内部存储时没有区别。 [code]bytes[/code]:二进制字符串。由于jpg等其他格式的文件不能用str进行显示,所以才用bytes来表示,bytes的每个字节为一个0-255的数字。如果打印的时候,Python会把能够用ASCII表示的部分显示为ASCII,这样方便阅读。bytes几乎支持除了格式化以外的所有str的方法,甚至包括了re模块 [code]bytearray() [/code]:二进制可原地变动的字符串。 [b]utf-8编码范围[/b]
范围 字节数 存储格式
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
[b]字节顺序标记BOM[/b] BOM是byte order marker的缩写, [b]指定编码写入时的规则[/b] 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'
[b]读取时的规则[/b] 如果指定了正确的编码,那么BOM会忽略,否则BOM会显示为乱码或者返回异常。
>>> open('h.txt','r').read()
'锘縟dd'
>>> open('h.txt','r',encoding='utf-8-sig').read()
'ddd'
[b]编码与解码[/b] [list] [*]chr和ord[/*] [/list]
>>> ord('中') #20013
>>> chr(20013) #'中'
[list] [*]把Unicode硬编码进字符串中。[/*] [/list]        '\xhh':用2位十六进制来表示一个字符        '\uhhhh':用4位十六进制来表示一个字符:        '\Uhhhhhhhh':用8位十六进制来表示一个字符        [code]>>> s = 'py\x74h\u4e2don' #'pyth中on'[/code] [b]str和bytes, bytearray进行转换[/b] [code]str.encode(encoding='utf-8') [/code] [code]bytes(s,encoding='utf-8') [/code] [code]bytes.decode(encoding='utf-8') [/code] [code]str(B, encoding='utf-8')[/code] [code]bytearray(string, encoding='utf-8')[/code] [code]bytearray(bytes)[/code] [b]文档编码声明[/b] Python默认使用utf-8编码。 [code]# -*- coding: latin-1 -*- [/code]:表示声明文档为latin-1编码。 [b]帮助函数[/b]
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()
[b]总结[/b] 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部