Python标准库—codecs模块

2023-01-13 12:07:40

codecs

常用函数

  • codecs.encode(obj, encoding='utf-8', errors='strict')

    使用为 encoding 注册的编解码器对 obj 进行编码,类似str.encode()方法。

    >>> codecs.encode("你好,world",encoding='ascii')
    Traceback (most recent call last):
      ...
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
    >>>
    >>> codecs.encode("你好,world",encoding='ascii',errors='replace')
    b'??,world'
    
  • codecs.decode(obj, encoding='utf-8', errors='strict')

    使用为 encoding 注册的编解码器对 obj 进行解码,类似str.decode()方法。

  • codecs.lookup(encoding)

    在 Python 编解码器注册表中查找编解码器信息,并返回一个 CodecInfo 对象。

    >>> import codecs
    >>> 
    >>> gbk = codecs.lookup('gbk')
    >>> gbk.encode("你好,world")
    (b'\xc4\xe3\xba\xc3,world', 8)
    >>> codecs.lookup('uuuu')
    Traceback (most recent call last):
      ...
    LookupError: unknown encoding: uuuu
    
    CodeInfo对象属性/方法 描述
    name 编码名称
    encode/decode 无状态的编解码函数
    streamwriter/streamreader 流式写入器和读取器类或工厂函数。
    incrementalencoder/incrementaldecoder 增量式的编码器和解码器类或工厂函数。
    >>> utf8 = codecs.lookup('utf-8')
    >>> utf8.name
    "utf-8"
    
  • codecs.getencoder(encoding)

    查找给定编码的编解码器并返回其编码器函数。

    >>> u8_encode = codecs.getencoder("utf8")
    >>> u8_encode("你好,world.")
    (b'\xe4\xbd\xa0\xe5\xa5\xbd,world.', 9)
    
  • codecs.getdecoder(encoding)

    查找给定编码的编解码器并返回其解码器函数。

    >>> b_data, _ = u8_encode("你好,world.")
    >>> u8_decode = codecs.getdecoder("utf-8")
    >>> u8_decode(b_data)
    ('你好,world.', 13)
    
  • codecs.open(filename, mode='r', encoding=None, errors='strict', buffering=1)

    使用给定的 mode 打开已编码的文件并返回一个 StreamReaderWriter的实例,提供透明的编码/解码;与内置函数open类似。

  • 常用的errors字符串

    errors字符串 描述
    strict 默认,出现编解码错误抛出UnicodeError
    ignore 忽略错误格式(编解码出错)的数据
    replace(仅适用文本编码) 编码错误替换为 '?'

    注意:文本编码—>用于将Unicode字符串编码为字节串的编码器。

  • 作者:Lzzwwen
  • 原文链接:https://blog.csdn.net/L_zzwwen/article/details/100068682
    更新时间:2023-01-13 12:07:40