Не могу использовать unichr в Python 3.1 - PullRequest
46 голосов
/ 28 февраля 2010

Я просматривал Python Cookbook (2nd Edition) , чтобы узнать, как обрабатывать строки и символы.

Я хотел попробовать преобразовать число в его эквивалент Юникода. Поэтому я попытался использовать встроенную функцию с именем ' unichr ' , которая в соответствии с Cookbook выглядит примерно так:

>>> print repr(unichr(8224))

... и выведет:

u'\u2020'

Однако код не выполнен. Я думал, что это как-то связано с print (потому что Python 3 использует print () вместо print ""), но это тоже не сработало. Я попробовал несколько вариантов кода, и он все еще не удался. Наконец я набрал простую строку:

unichr(10000)

К моему удивлению, это сообщение об ошибке продолжало появляться, независимо от того, какое значение я поместил в вышеуказанную функцию:

 NameError: name 'unichr' is not defined

В чем может быть проблема? Есть какой-то конкретный модуль, который я должен импортировать?

Ответы [ 4 ]

61 голосов
/ 28 февраля 2010

В Python 3 вы просто используете chr :

>>> chr(10000)
'✐'
16 голосов
/ 28 февраля 2010

В Python 3 больше нет разницы между юникодом и обычными строками. Только между строками Unicode и двоичными данными. Таким образом, разработчики наконец удалили функцию unichr в пользу обычного chr, который теперь делает то же, что и старый unichr. Смотри документацию здесь .

4 голосов
/ 28 февраля 2010

Python 3.x не имеет специального типа / класса строки Unicode. Каждая строка является строкой Юникода. Итак ... я бы попробовал chr. Должен дать вам то, что unichr сделал до 3.х. К сожалению, не могу проверить.

2 голосов
/ 24 января 2019

Если вам нужно работать как на Python 2, так и на Python 3, вы можете использовать этот общий синтаксис (неиспользуемый синтаксис будет указывать на новый)

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