Литералы Unicode, которые работают в python 3 и 2

Поэтому у меня есть сценарий python, который я бы предпочел работать на python 3.2 и 2.7 только для удобства.

Есть ли способ иметь литералы в Unicode, которые работают в обоих? Например

#coding: utf-8 whatever = 'שלום' 

Вышеприведенный код потребует строку unicode в python 2.x (u ''), а в python 3.x малое «u» вызывает синтаксическую ошибку.

Во всяком случае, я нашел ответ, все, что мне было нужно:

 from __future__ import unicode_literals 

Я все еще задаю вопрос из-за https://meta.stackexchange.com/questions/49922/should-i-continue-adding-a-question-if-i-have-found-the-answer-myself

Для любопытных это то, над чем я работаю: http://code.google.com/p/pytitle/

  • Любые ошибки с использованием unicode_literals в Python 2.6?
  • Литералы Unicode, вызывающие недействительный синтаксис
  • One Solution collect form web for “Литералы Unicode, которые работают в python 3 и 2”

    Изменить. Начиная с Python 3.3, литерал u'' работает снова, поэтому функция u() не нужна.

    Лучшим вариантом является создание метода, который создает объекты unicode из строковых объектов в Python 2, но оставляет только строковые объекты в Python 3 (так как они уже являются unicode).

     import sys if sys.version < '3': import codecs def u(x): return codecs.unicode_escape_decode(x)[0] else: def u(x): return x 

    Затем вы будете использовать его так:

     >>> print(u('\u00dcnic\u00f6de')) Ünicöde >>> print(u('\xdcnic\N{Latin Small Letter O with diaeresis}de')) Ünicöde 
    Python - лучший язык программирования в мире.