• 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~0x3FFFFFF 5字节 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'xefxbbxbfaaa'
    >>> open('h.txt','w',encoding='utf-16').write('bbb')
    3
    >>> open('h.txt','rb').read()
    b'xffxfebx00bx00bx00'
    >>> open('hh.txt','w',encoding='utf-16-be').write('ccc')
    3
    >>> open('hh.txt','rb').read()
    b'x00cx00cx00c'
    >>> 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 = 'pyx74hu4e2don' #'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()
    
  • 相关阅读:
    Angular Universal教学-将现有专案导入Server Side Render
    [.NET] 使用ValidationContext快速进行模型资料的验证
    FINS/TCP_OMRON(1)
    C#中字段、属性、只读、构造函数赋值、反射赋值的相关
    async异步方法
    C# GetHashCode、Equals函数和键值对集合的关系
    JS三个编码函数和net编码System.Web.HttpUtility.UrlEncode比较
    ES6摘抄
    js基础
    js自执行函数、调用递归函数、圆括号运算符、函数声明的提升
  • 原文地址:https://www.cnblogs.com/jessonluo/p/4744833.html
Copyright © 2020-2023  润新知