Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 24, 2013 12:33:43

Jino
Зарегистрирован: 2013-10-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Представление строк в python 3

Из dive into python

In Python 3, all strings are sequences of Unicode characters. There is no such thing as a Python string encoded in UTF-8, or a Python string encoded as CP-1252. “Is this string UTF-8?” is an invalid question. UTF-8 is a way of encoding characters as a sequence of bytes. If you want to take a string and turn it into a sequence of bytes in a particular character encoding, Python 3 can help you with that. If you want to take a sequence of bytes and turn it into a string, Python 3 can help you with that too. Bytes are not characters; bytes are bytes. Characters are an abstraction. A string is a sequence of those abstractions.

Хочу до конца разобраться в этом.
Получается, строка в питоне - это последовательность символов юникода, но ее кодировка не UTF-8. Какая кодировка у этой строки? Почему Is this string UTF-8 - некорректный вопрос?

Офлайн

#2 Окт. 24, 2013 13:23:23

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Представление строк в python 3

UCS-2 или UCS-4 в зависимости от опции при компиляции

Офлайн

#3 Окт. 24, 2013 13:39:44

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Представление строк в python 3

Jino
Какая кодировка у этой строки?
никакая, это прямой юникод, он один



Офлайн

#4 Окт. 24, 2013 14:19:05

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Представление строк в python 3

Jino
строка в питоне - это последовательность символов юникода, но ее кодировка не UTF-8. Какая кодировка у этой строки?

Unicode это не кодировка, это стандарт по которому, каждому символу соответствует определённое число.
читать, смотреть



Офлайн

#5 Окт. 24, 2013 18:48:13

Jino
Зарегистрирован: 2013-10-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Представление строк в python 3

Budulianin
Хорошо, если я правильно понял, то строки в питоне представляют абстракцию над последовательностью байтов. Мне не нужно думать ни про кодировки, ни про что-либо еще, когда я работаю со строкой - мне достаточно знать, что туда я могу записать любой символ юникода. Если строковые данные мне нужно передавать или получать, тогда я пользуюсь хелпер-методами encode/decode. А по всяким вещам вроде оптимальности используемой памяти при работе со строчками, я полагаюсь на то, что это достаточно хорошо реализовано в интерпретаторе. Я прав?

Офлайн

#6 Окт. 24, 2013 19:45:03

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Представление строк в python 3

Jino
Хорошо, если я правильно понял, то строки в питоне представляют абстракцию над последовательностью байтов. Мне не нужно думать ни про кодировки, ни про что-либо еще, когда я работаю со строкой - мне достаточно знать, что туда я могу записать любой символ юникода.
Для Python3.x да. В Python2 строки не Unicode.
Jino
Если строковые данные мне нужно передавать или получать, тогда я пользуюсь хелпер-методами encode/decode.
Да, в программе надо работать с Unicode, в видео объяснили почему.
Jino
А по всяким вещам вроде оптимальности используемой памяти при работе со строчками, я полагаюсь на то, что это достаточно хорошо реализовано в интерпретаторе
Если не на него, то на кого?




Отредактировано Budulianin (Окт. 24, 2013 19:45:32)

Офлайн

#7 Окт. 24, 2013 23:14:21

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Представление строк в python 3

Jino
А по всяким вещам вроде оптимальности используемой памяти при работе со строчками, я полагаюсь на то, что это достаточно хорошо реализовано в интерпретаторе
начиная с python3.3 реализовано достаточно гибко http://www.python.org/dev/peps/pep-0393/

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version