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