Что такое Python 2/3 совместимая альтернатива функции unicode()?

Есть ли альтернатива питону 2 unicode() функция, которая может использоваться в коде, который будет работать как с Python 2, так и с 3, и определенно будет выводить Unicode в Python 2?

  • unicode() функция не существует в Python 3
  • six.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.

Другие вопросы по тегам