Я использовал это:
u = unicode(text, 'utf-8')
Но возникает ошибка с Python 3 (или ... может быть, я просто забыл что-то включить):
NameError: global name 'unicode' is not defined
Спасибо.
Я использовал это:
u = unicode(text, 'utf-8')
Но возникает ошибка с Python 3 (или ... может быть, я просто забыл что-то включить):
NameError: global name 'unicode' is not defined
Спасибо.
Ответы:
Литеральные строки в Python3 по умолчанию являются юникодом.
Предполагая, что
text
этоbytes
объект, просто используйтеtext.decode('utf-8')
unicode
Python2 эквивалентенstr
Python3, поэтому вы также можете написать:Если вы предпочитаете.
источник
str
- это юникод, т.е. он «расшифрован», поэтому нет смысла называтьdecode
егоstr(text, 'utf-8')
, текст должен быть двоичной строкой. egstr(b'this is a binary', 'utf-8')
Что нового в Python 3.0 говорит:
Если вы хотите убедиться, что вы выводите utf-8, вот пример с этой страницы в Unicode в версии 3.0 :
источник
В качестве обходного пути я использовал это:
источник
try: unicode = str; except: pass
.unicode = str
потому что ни 2, ни 3 не подведутfrom six import u as unicode
что я бы предпочел просто потому, что он более самодокументированный (поскольку шесть - это уровень совместимости 2/3), чемunicode = str
Вот как я решил свою проблему с преобразованием символов типа \ uFE0F, \ u000A и т. Д. А также смайликов, закодированных с помощью 16 байтов.
источник
В программе Python 2, которую я использовал много лет, была такая строка:
Это не работало в Python 3.
Однако оказалось, что программа работает с:
Я не помню, почему я поставил здесь юникод в первую очередь, но я думаю, что это произошло потому, что имя может содержать шведские буквы åäöÅÄÖ. Но даже они работают без "юникода".
источник
самый простой способ в python 3.x
источник