Что такое Python 2/3 совместимая альтернатива функции unicode()?
Есть ли альтернатива питону 2 unicode()
функция, которая может использоваться в коде, который будет работать как с Python 2, так и с 3, и определенно будет выводить Unicode в Python 2?
unicode()
функция не существует в Python 3six.u(u'xyz')
выдает ошибку в python 2
Я пишу тестовый код, в котором я определенно хочу создать вывод Unicode, поэтому он будет взорван в тестах, если он будет объединен со строкой не-Unicode где-нибудь в пути выполнения - например,
'stuff %s' % u'unistuff'
Для общего случая, который я видел, предлагается просто использовать str()
, но в Python 2, который не производит Unicode.
Я думаю, я мог бы сделать:
if six.PY3:
unicode = str
но наверняка есть какой-то официально поддерживаемый способ.
(И это довольно сложно для Google, так как все результаты касаются строк Юникода, а не самой функции Юникода).
1 ответ
В соответствии с документацией (которую я бы рекомендовал прочитать...) вы хотите six.text_type
:
Тип для представления (Unicode) текстовых данных. Это
unicode()
в Python 2 иstr
в Python 3.