Вопрос-Ответ

What's the u prefix in a Python string?

Какой префикс u в строке Python?

Как в:

u'Hello'

Я предполагаю, что это указывает на "Unicode", это правильно?

Если да, то с каких пор он доступен?

Переведено автоматически
Ответ 1

Вы правы, смотрите 3.1.3. Строки Unicode.

Это был синтаксис начиная с Python 2.0.

Python 3 сделал их избыточными, поскольку тип строки по умолчанию - Unicode. В версиях с 3.0 по 3.2 они были удалены, но они были повторно добавлены в 3.3+ для совместимости с Python 2, чтобы облегчить переход со 2 на 3.

Ответ 2

U в u'Some String' означает, что ваша строка является строкой Unicode.

Вопрос: Я ужасно, ужасно спешу и попал сюда из поиска Google. Я пытаюсь записать эти данные в файл, я получаю сообщение об ошибке, и мне нужно самое простое, возможно ошибочное, решение в эту секунду.

Ответ: Вам действительно следует прочитать "Абсолютный минимум" Джоэла, который Абсолютно, положительно должен знать каждый разработчик программного обеспечения о Unicode и наборах символов (без оправданий!) эссе о наборах символов.

Вопрос: пожалуйста, без временного кода

A: Отлично. попробуйте str('Some String') или 'Some String'.encode('ascii', 'ignore'). Но вам действительно следует прочитать некоторые ответы и обсуждение по преобразованию строки Unicode и этому превосходному, просто превосходному учебнику по кодировке символов.

Ответ 3

Я предполагаю, что это указывает на "Unicode", это правильно?


ДА.


Если да, то с каких пор он доступен?


Python 2.x.

В Python 3.x строки по умолчанию используют Unicode, и в u префиксе нет необходимости. Примечание: в Python 3.0-3.2 u является синтаксической ошибкой. В Python 3.3+ это снова законно, чтобы упростить написание приложений, совместимых на 2/3.

Ответ 4

Я пришел сюда, потому что у меня был забавный синдром символа в моем requests выводе. Я думал, что response.text даст мне правильно декодированную строку, но в выходных данных я обнаружил забавные двойные символы там, где должны были быть немецкие умляуты.

Оказывается, response.encoding каким-то образом был пустым, и поэтому response не знал, как правильно декодировать содержимое, и просто обрабатывал его как ASCII (я думаю).

Мое решение состояло в том, чтобы получить необработанные байты с 'response.content' и вручную применить decode('utf_8') к нему. Результатом был schöne Umlaute.

Правильно расшифрованный


für


против неправильно декодированного


fĂżr


python