2024-10-09 01:23:31 发布
网友
例如,如果我有一个unicode字符串,我可以将其编码为一个ASCII字符串,如下所示:
>>> u'\u003cfoo/\u003e'.encode('ascii') '<foo/>'
但是,例如,这个ASCII字符串:
'\u003foo\u003e'
。。。我想转换成与上面第一个示例中相同的ASCII字符串:
'<foo/>'
我花了一段时间才弄明白,但this page得到了最好的答案:
>>> s = '\u003cfoo/\u003e' >>> s.decode( 'unicode-escape' ) u'<foo/>' >>> s.decode( 'unicode-escape' ).encode( 'ascii' ) '<foo/>'
还有一个“原始unicode转义”编解码器来处理指定unicode字符串的另一种方法——查看链接页面的“unicode构造函数”部分以了解更多详细信息(因为我不是unicode saavy)。
编辑:另请参见Python Standard Encodings。
Ned Batchelder说:
It's a little dangerous depending on where the string is coming from, but how about:>>> s = '\u003cfoo\u003e' >>> eval('u"'+s.replace('"', r'\"')+'"').encode('ascii') '<foo>'
It's a little dangerous depending on where the string is coming from, but how about:
>>> s = '\u003cfoo\u003e' >>> eval('u"'+s.replace('"', r'\"')+'"').encode('ascii') '<foo>'
实际上,这种方法可以像这样安全:
>>> s = '\u003cfoo\u003e' >>> s_unescaped = eval('u"""'+s.replace('"', r'\"')+'-"""')[:-1]
注意三引号字符串和短划线在最后三个引号之前。
因此,只要以原始格式捕获,就不必担心用户输入的内容。
在Python 2.5上,正确的编码是“unicode_escape”,而不是“unicode escape”(注意下划线)。
我不确定新版本的Python是否更改了unicode名称,但这里只使用下划线。
不管怎样,就是这样。
我花了一段时间才弄明白,但this page得到了最好的答案:
还有一个“原始unicode转义”编解码器来处理指定unicode字符串的另一种方法——查看链接页面的“unicode构造函数”部分以了解更多详细信息(因为我不是unicode saavy)。
编辑:另请参见Python Standard Encodings。
Ned Batchelder说:
实际上,这种方法可以像这样安全:
注意三引号字符串和短划线在最后三个引号之前。
因此,只要以原始格式捕获,就不必担心用户输入的内容。
在Python 2.5上,正确的编码是“unicode_escape”,而不是“unicode escape”(注意下划线)。
我不确定新版本的Python是否更改了unicode名称,但这里只使用下划线。
不管怎样,就是这样。
相关问题 更多 >
编程相关推荐