Unicode литералы, вызывающие неверный синтаксис - PullRequest
4 голосов
/ 27 сентября 2011

Следующий код:

s = s.replace(u"&", u"&")

вызывает ошибку в python:

SyntaxError: invalid syntax

удаление u до того, как " решит проблему, но этодолжен работать как есть?Я использую Python 3.1

Ответы [ 3 ]

10 голосов
/ 27 сентября 2011

u больше не используется в Python 3. Строковые литералы по умолчанию имеют юникод.См. Что нового в Python 3.0 .

Вы больше не можете использовать литералы u"..." для текста Unicode.Однако вы должны использовать литералы b"..." для двоичных данных.

3 голосов
/ 27 сентября 2011

На Python 3 строки в юникоде.Нет необходимости (и, как вы обнаружили, вы не можете) поставить u перед строковым литералом для обозначения юникода.

Вместо этого вы должны поставить b перед байтомбуквально означает, что не Unicode.

1 голос
/ 19 марта 2015

В Python3.3 + литерал Юникода снова действителен, см. Что нового в Python 3.3 :

Новые функции синтаксиса:

Новый выход из выражения для делегирования генератора.
Синтаксис u'unicode 'снова принят для объектов str.

...