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



например:



u'Hello'


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



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

581   7  

7 ответов:

ты прав, смотри 3.1.3. Строки Юникода.

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

С u'Some String' означает, что строка строку.

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

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

вопрос: сры не время код, пожалуйста

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

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

да.

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

Python 2.x.

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

должно помочь следующее:

http://docs.python.org/library/functions.html#unicode

http://www.amk.ca/python/howto/unicode (перейдите к разделу "поддержка юникода Python", если вы уже знакомы с принципами Юникода)

все строки, предназначенные для людей, должны использовать U"".

я обнаружил, что следующее мышление очень помогает при работе со строками Python:все строки манифеста Python должны использовать u"" синтаксис. Элемент "" синтаксис предназначен только для байтовых массивов.

прежде чем начнется избиение, позвольте мне объяснить. Большинство программ Python начинаются с использования "" для строк. Но тогда им нужно поддерживать документацию из Интернета, поэтому они начинают использовать "".decode и вдруг они получают исключения везде о декодировании того и этого - все из-за использования "" для строк. В этом случае Unicode действительно действует как вирус и будет сеять хаос.

но, если вы будете следовать моему правилу, у вас не будет этой инфекции (потому что вы уже будете заражены).

это Юникод.

просто поместите переменную между str(), и он будет работать нормально.

но в случае, если у вас есть два списка, как показано ниже:

a = ['co32','co36']
b = [u'co32',u'co36']

если вы проверяете set(a)==set(b), это будет ложно, но если вы сделаете следующее:

b = str(b)
set(a)==set(b)

теперь результат будет истинным.

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

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

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

правильно декодируется

für

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

fĂźr

Comments

    Ничего не найдено.