2012-04-03 3 views
0

Это полный нуб вопрос ....Варианты строк в python - что они означают?

но почему некоторые строки в Python выглядеть следующим образом:

{u'foobar: u'bar} 

в то время как другие появляются, как:

{foobar: bar} 

они эквивалентны? Как вы конвертируете между ними?

+0

В качестве примечания все строки являются строками Unicode в Python 3.x. –

+0

Также смотрите этот 25-минутный разговор Нед Батчелдера о Юникоде. Он очень хорошо объясняет различия в Unicode vs String. http://nedbatchelder.com/text/unipain.html –

ответ

3

u Префикс означает, что строка Юникода ..

http://docs.python.org/reference/lexical_analysis.html

Обратитесь к разделу 2.4.1:

префикс 'U' или 'U' делает строку Строка Unicode. Строки Unicode используют набор символов Юникода, определенный консорциумом Unicode и ISO 10646. Ниже перечислены некоторые дополнительные escape-последовательности, описанные ниже , в строках Unicode. Префикс «b» или «B» равен , проигнорированный в Python 2; это означает, что литерал должен стать литералом байтов в Python 3 (например, когда код автоматически преобразуется с 2to3). Префикс 'u' или 'b' может сопровождаться префиксом 'r'.

Как вы можете видеть, Python сможет автоматически сравнивать строки различных кодировок:

>>> a = u'Hello' 
>>> b = 'Hello' 
>>> c = ur'Hello' 
>>> a == b 
True 
>>> b == c 
True 

Вы можете узнать больше о строках Unicode в Python (а также, как конвертировать или кодировать строки) ссылаясь на documentation.

2

Использование u'string' определяет, что строка имеет тип юникода.

>>> type('hi') 
<type 'str'> 
>>> type(u'hi') 
<type 'unicode'> 

Вы можете прочитать все об этом в uncode documentation page.

3

Нет, они не эквивалентны

«У», что префиксы строка означает, что это Unicode. Unicode был разработан как расширенный набор символов для размещения языков, которые не являются английскими. Вы можете прочитать эту интересную и нетехническую историю Юникода.

http://www.reigndesign.com/blog/love-hotels-and-unicode/

Как отмечает Lattyware, в Python 3.x, все строки Unicode.

Если вы работаете с Python 2.x, особенно для Интернета, стоит убедиться, что ваша программа правильно обрабатывает Unicode. Многим людям нравится беспокоиться о сайтах, которые не поддерживают Unicode.

Смежные вопросы