鉴于此示例,我得到以下错误:
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)
试试这个:
>>> 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').
还要注意字典2033和0x2033字典之间的区别:转义序列的值以十六进制表示,因此您需要匹配它.\uxxxx0x2033
关于你的问题的标题,string.translate(模块中的translate函数string)不支持字典作为参数,但调用.translateunicode字符串本身(正如你在问题体中所做的那样)有效.
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |