Найти - Пользователи
Полная версия: Представление строк в python 3
Начало » Python для новичков » Представление строк в python 3
1
Jino
Из 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 - некорректный вопрос?
bismigalis
UCS-2 или UCS-4 в зависимости от опции при компиляции
py.user.next
Jino
Какая кодировка у этой строки?
никакая, это прямой юникод, он один
Budulianin
Jino
строка в питоне - это последовательность символов юникода, но ее кодировка не UTF-8. Какая кодировка у этой строки?

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


bismigalis
Jino
А по всяким вещам вроде оптимальности используемой памяти при работе со строчками, я полагаюсь на то, что это достаточно хорошо реализовано в интерпретаторе
начиная с python3.3 реализовано достаточно гибко http://www.python.org/dev/peps/pep-0393/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB