使用不同长度字符的自定义Python字符串编解码器?
是否可以使用纯Python代码生成自定义Python,其中该编解码器的字符可以是多个常规使用不同长度字符的自定义Python字符串编解码器?,python,character-encoding,Python,Character Encoding,是否可以使用纯Python代码生成自定义Python,其中该编解码器的字符可以是多个常规str或unicode字符,就像Python 2.x中的“unicode”编码一样,两个ASCII字符可以是一个unicode字符?(例如,如果“.”和“%”各为1个字符,则“%”中的“”将为false) 如果这是可能的,有没有办法让编解码器与所有字符串方法一起正常工作?(比如说 a = 'qwerty.uio%.p'.encode('aencoding') a.split('.'.encode('aenco
str
或unicode
字符,就像Python 2.x中的“unicode”编码一样,两个ASCII字符可以是一个unicode字符?(例如,如果“.”和“%”各为1个字符,则“%”中的“”将为false)
如果这是可能的,有没有办法让编解码器与所有字符串方法一起正常工作?(比如说
a = 'qwerty.uio%.p'.encode('aencoding')
a.split('.'.encode('aencoding'))
…将返回一个元组,其中包含qwerty
和uio%.p
)您当然可以想出一种自定义编码,它使用多个字节来表示单个字符。UTF-8就是一个例子
Pythonstr
类型存储字节,不知道用于生成这些字节的编码方案。例如,UTF-8使用2个字节表示unicode字符'\u00f1'
:
>>> s1 = u'\u00f1'.encode('utf-8')
>>> s1
'\xc3\xb1'
而str
操作不知道字节'\xc3\xb1'
表示单个字符:
>>> '\xc3' in s1
True
>>> s1.__contains__('\xc3')
True
在设计编码时,你可能会考虑一些问题:你需要编码多少个不同的符号?您的转义字符是否比'%'
多?您只处理1字节和2字节序列吗
在不了解更多编码的情况下,我可以给你一个如何实现的示例。您可以将str
表示转换为unicode
,并使用其有效的方法来比较、拆分和连接您的值:
>>> s1 = '.'.decode('aencoding')
>>> s1
u'\u002e'
>>> s2 = 'x.y%.z'.decode('aencoding')
>>> s2
u'\u0078\u002e\u0079\u252e\u007a'
>>> s2.split(s1)
[u'x', u'y\u252ez'
>>> u'y\u252ez'.encode('aencoding')
'y%.z'
您还可以使用一个字节来表示多个字符的编码。