• 技术文章 >后端开发 >Python教程

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

    高洛峰高洛峰2017-02-23 16:22:12原创607
    本文主要给大家介绍了关于 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字节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~0x3FFFFFF5字节111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
    0x4000000~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'

    编码与解码

    >>> ord('中') #20013
    >>> chr(20013) #'中'

    '\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中文网!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Python 3.x 连接数据库示例(pymysql 方式) 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 在Django的视图(View)外使用Session的方法• Python NumPy教程之数据类型对象• Python标准库中的logging用法示例• 使用Python处理KNN分类算法• python自动化测试实例解析
    1/1

    PHP中文网