栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何正确创建自定义文本编解码器?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何正确创建自定义文本编解码器?

您要求的最低!

  • 编写编码功能和解码功能。
  • 编写一个“搜索函数”,该函数返回
    CodecInfo
    由上述编码器和解码器构造的对象。
  • 使用prec.register注册返回上述
    CodecInfo
    对象的函数。

这是将小写字母az顺序转换为0-25的示例。

import precsimport stringfrom typing import Tuple# prepare map from numbers to letters_enpre_table = {str(number): bytes(letter, 'ascii') for number, letter in enumerate(string.ascii_lowercase)}# prepare inverse map_depre_table = {ord(v): k for k, v in _enpre_table.items()}def custom_enpre(text: str) -> Tuple[bytes, int]:    # example enprer that converts ints to letters    # see https://docs.python.org/3/library/precs.html#precs.Codec.enpre    return b''.join(_enpre_table[x] for x in text), len(text)def custom_depre(binary: bytes) -> Tuple[str, int]:    # example deprer that converts letters to ints    # see https://docs.python.org/3/library/precs.html#precs.Codec.depre    return ''.join(_depre_table[x] for x in binary), len(binary)def custom_search_function(encoding_name):    return precs.CodecInfo(custom_enpre, custom_depre, name='Reasons')def main():    # register your custom prec    # note that CodecInfo.name is used later    precs.register(custom_search_function)    binary = b'abcdefg'    # depre letters to numbers    text = precs.depre(binary, encoding='Reasons')    print(text)    # enpre numbers to letters    binary2 = precs.enpre(text, encoding='Reasons')    print(binary2)    # enpre(depre(...)) should be an identity function    assert binary == binary2if __name__ == '__main__':    main()

运行此打印

$ python prec_example.py0123456b'abcdefg'

有关界面的详细信息,请参见https://docs.python.org/3/library/precs.html#prec-
objects

Codec
。特别是解码功能

…解码对象 输入 并返回一个元组(输出对象,消耗的长度)。

而编码功能

…编码对象 输入 并返回一个元组(输出对象,消耗的长度)。

注意,您还应该担心处理流,增量编码/解码以及错误处理。有关更完整的示例,请参考@
krs013提到的十六进制编解码器。


PS代替

prec.depre
,也可以使用
prec.open(..., encoding='Reasons')



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645512.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号