Как в:
u'Hello'
Я думаю, что это означает «Юникод», это правильно?
Если да, то с каких пор это доступно?
Вы правы, см. 3.1.3. Юникод Строки .
Это был синтаксис начиная с Python 2.0.
Python 3 сделал их избыточными, так как тип строки по умолчанию - Unicode. Версии 3.0–3.2 удалили их, но они были повторно добавлены в 3.3+ для совместимости с Python 2 для облегчения перехода с 2 на 3.
ur"string"
) допустимо в Python 2, но, к сожалению, это неверный синтаксис в Python 3.Значение u in
u'Some String'
означает, что ваша строка является строкой Unicode .Q: Я очень спешу и попал сюда из Поиска Google. Я пытаюсь записать эти данные в файл, я получаю сообщение об ошибке, и мне нужно самое простое, возможно, ошибочное решение в эту секунду.
A: Вам действительно следует прочитать статью Абсолютного минимума, которую каждый Джоэл разрабатывает абсолютно, положительно должен знать о Юникоде и наборах символов (без извинений!) О наборах символов.
Q: сри без кода времени, пожалуйста
Штраф. попробуйте
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 совместимых приложений.источник
u
префикс.six.text_type()
повсеместно для (надеюсь, крошечного) числа людей, все еще использующих 3. [012] - по крайней мере, информация там, чтобы вы могли выбрать.Я пришел сюда, потому что у меня был синдром смешного чарса на моем
requests
выходе. Я думал,response.text
что даст мне правильно декодированную строку, но в выводе я нашел смешные двойные символы, где должны были быть немецкие умлауты.Оказывается,
response.encoding
было как-то пусто, и поэтомуresponse
не знал, как правильно декодировать контент, и просто рассматривал его как ASCII (я думаю).Мое решение состояло в том, чтобы получить необработанные байты с помощью «response.content» и применить вручную
decode('utf_8')
их. Результатом было schöne Umlaute.Правильно декодированный
против неправильно декодированных
источник
Все строки, предназначенные для людей, должны использовать "".
Я обнаружил, что следующий подход очень помогает при работе со строками Python: Все строки манифеста Python должны использовать
u""
синтаксис.""
Синтаксис для байтовых массивов, только.Прежде чем начать избиение, позвольте мне объяснить. Большинство программ Python начинаются с использования
""
для строк. Но тогда им нужно поддерживать документацию из Интернета, чтобы они начали использовать"".decode
и внезапно они получают исключения везде о декодировании того или иного - все из-за использования""
для строк. В этом случае Unicode действует как вирус и может нанести ущерб.Но если вы будете следовать моему правилу, у вас не будет этой инфекции (потому что вы уже будете заражены).
источник
bash -c "echo Shouldn\\'t you use b\\\"...\\\" for byte arrays?"
u""
.Это Юникод.
Просто поместите переменную между ними
str()
, и она будет работать нормально.Но если у вас есть два списка, как показано ниже:
Если вы проверите
set(a)==set(b)
, это будет ложным, но если вы сделаете следующее:Теперь результат будет True.
источник
str()
илиu'€'.encode()
) без передачи кодировки. Если строка содержит не ASCII, пользователь получит исключение UnicodeEncodeException.b = str(b)
просто дает строкуrepr()
списка, то естьb = "[u'co32', u'co36']"
. Тогдаset(a)==set(b) = False