Как в:
u'Hello'
Я предполагаю, что он указывает "Unicode", правильно ли это?
Если да, то когда это доступно?
Как в:
u'Hello'
Я предполагаю, что он указывает "Unicode", правильно ли это?
Если да, то когда это доступно?
Вы правы, см. 3.1.3. Юникод Строки.
Это был синтаксис начиная с Python 2.0.
Python 3 сделал их избыточными, так как тип строки по умолчанию - Unicode. Версии 3.0–3.2 удалили их, но они были повторно добавлены в 3. 3+ для совместимости с Python 2, чтобы помочь переходу 2 к 3.
U в u'Some String'
означает, что ваша строка является строкой Unicode.
В: Я ужасно, ужасно спешу, и я приземлился здесь из Google Поисков. Я пытаюсь записать эти данные в файл, я получаю сообщение об ошибке, и мне нужна мертвая версия, которая, вероятно, имеет недостатки, на этот раз.
A: Вы действительно должны прочитать Joel Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о Unicode и наборах символов (без отговорок!) на наборах символов.
Q: sry no time code pls
A: Хорошо. попробуйте str('Some String')
или 'Some String'.encode('ascii', 'ignore')
. Но вы действительно должны прочитать некоторые ответы и обсуждение Преобразование строки Unicode и this отлично, отлично, праймер на кодировке символов.
Я предполагаю, что он указывает "Юникод", правильно ли это?
Да.
Если да, то когда это доступно?
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 (если вы уже знакомы с принципами Unicode, перейдите к разделу "Поддержка Unicode на Python" )
Все строки, предназначенные для людей, должны использовать u "".
Я обнаружил, что следующий подход очень помогает при работе с строками Python: Все Строки манифеста Python должны использовать синтаксис u""
. Синтаксис ""
предназначен только для байтовых массивов.
Прежде чем начнется треск, позвольте мне объяснить. Большинство программ Python начинаются с использования ""
для строк. Но тогда им нужно поддерживать документацию через Интернет, поэтому они начинают использовать "".decode
, и внезапно они получают исключения во всем мире об декодировании этого и того же - все из-за использования ""
для строк. В этом случае Unicode действительно действует как вирус и будет наносить ущерб.
Но, если вы будете следовать моему правилу, у вас не будет этой инфекции (потому что вы уже заразитесь).
Это Unicode.
Просто поставьте переменную между str()
, и она будет работать нормально.
Но если у вас есть два списка, например:
a = ['co32','co36']
b = [u'co32',u'co36']
Если вы отметите set(a)==set(b)
, оно будет выглядеть как False, но если вы сделаете следующее:
b = str(b)
set(a)==set(b)
Теперь результат будет True.
Я пришел сюда, потому что у меня был синдром смешного чарса в выводе моих requests
. Я думал, что response.text
даст мне правильно декодированную строку, но в выводе я нашел забавные двойные символы, где должны были быть немецкие умлауты.
Оказывается, response.encoding
каким-то образом был пустым, и поэтому response
не знал, как правильно декодировать контент, и просто рассматривал его как ASCII (я полагаю).
Мое решение состояло в том, чтобы получить необработанные байты с помощью "response.content" и вручную применить к нему decode('utf_8')
. Результатом было schöne Umlaute.
Правильно декодированный
мех
против неправильно декодированного
fĂźr