Python string.translate () не работает полностью? - PullRequest
0 голосов
/ 11 июня 2010

Учитывая этот пример, я получаю следующее сообщение:

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

1 Ответ

6 голосов
/ 11 июня 2010

Попробуйте вместо этого:

>>> print u'\u2033'.translate({0x2033:u'd'})
d

Поскольку вы использовали u'\2033' вместо u'\u2033', в результате получилось два символа: u'\203'+u'3'.Попытка распечатать это дала исключение, потому что кодировка вашего терминала не поддерживает символ u'\203' (который совпадает с u'\x83').

Также обратите внимание на разницу между 2033 и 0x2033словарь: escape-последовательность \u<i>xxxx</i> принимает свое значение в шестнадцатеричном формате, поэтому вам потребуется 0x2033 для ее сопоставления.

Что касается названия вашего вопроса, string.translate (функция translate вМодуль 1019 *) не поддерживает словарь в качестве параметра, но вызов .translate для самой строки Unicode (как вы это делали в теле вопроса) работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...