Python的string.translate()不能完全发挥作用?

Rhu*_*arb 0 python unicode

鉴于此示例,我得到以下错误:

print u'\2033'.translate({2033:u'd'})

C:\Python26\lib\encodings\cp437.pyc in encode(self, input, errors)
     10
     11     def encode(self,input,errors='strict'):
---> 12         return codecs.charmap_encode(input,errors,encoding_map)
     13
     14     def decode(self,input,errors='strict'):

UnicodeEncodeError: 'charmap' codec can't encode character u'\x83' in position 0
Run Code Online (Sandbox Code Playgroud)

int*_*jay 6

试试这个:

>>> print u'\u2033'.translate({0x2033:u'd'})
d
Run Code Online (Sandbox Code Playgroud)

由于你用u'\2033'而不是u'\u2033',结果是两个字符:u'\203'+u'3'.尝试打印它会产生异常,因为终端的编码不支持该字符u'\203'(与之相同u'\x83').

还要注意字典20330x2033字典之间的区别:转义序列的值以十六进制表示,因此您需要匹配它.\uxxxx0x2033

关于你的问题的标题,string.translate(模块中的translate函数string)不支持字典作为参数,但调用.translateunicode字符串本身(正如你在问题体中所做的那样)有效.