Как узнать сколько байт в тексте python
Перейти к содержимому

Как узнать сколько байт в тексте python

Байты (bytes и bytearray)

Байтовые строки в Python — что это такое и с чем это едят? Байтовые строки очень похожи на обычные строки, но с некоторыми отличиями. Попробуем выяснить, с какими.

Что такое байты? Байт — минимальная единица хранения и обработки цифровой информации. Последовательность байт представляет собой какую-либо информацию (текст, картинку, мелодию. ).

Создаём байтовую строку:

Если первые три способа нам уже известны (тут, тут и тут), то последний нужно пояснить. Функция bytes принимает список чисел от 0 до 255 и возвращает байты, получающиеся применением функции chr.

Что делать с байтами? Хотя байтовые строки поддерживают практически все строковые методы, с ними мало что нужно делать. Обычно их надо записать в файл / прочесть из файла и преобразовать во что-либо другое (конечно, если очень хочется, то можно и распечатать). Для преобразования в строку используется метод decode:

Bytearray

Bytearray в python — массив байт. От типа bytes отличается только тем, что является изменяемым. Про него, в общем-то, больше рассказать нечего.

Python: получить размер строки в байтах

У меня есть строка, которая должна быть отправлена по сети. Мне нужно проверить общее количество байтов, в которых оно представлено.

sys.getsizeof(string_name) возвращает дополнительные байты. Например, для sys.getsizeof(«a») возвращает 22, в то время как один символ представлен в Python только одним байтом. Есть ли другой способ найти это?

2 ответа

Если вам нужно количество байтов в строке, эта функция должна сделать это для вас довольно основательно.

Причина, по которой вы получили странные числа, заключается в том, что инкапсулированные в строку — это куча другой информации из-за того, что строки являются реальными объектами в python.

Это интересно, потому что если вы посмотрите на мое решение для кодирования строки в ‘utf-8’, там есть метод ‘encode’ для объекта ‘s’ (который является строкой). Ну, его нужно где-то хранить, да? Следовательно, количество байтов больше обычного. Он включает этот метод вместе с некоторыми другими :).

Есть предостережение в отношении принятого ответа.

Для некоторых многобайтовых кодировок (например, utf-16) string.encode добавит в начале Метку порядка байтов (BOM), которая представляет собой последовательность специальных байтов, информирующих читателя о байтовый порядок байтов. Таким образом, длина, которую вы получите, на самом деле len(BOM) + len(encoded_word) .

Если вы не хотите считать байты спецификации, вы можете использовать либо версию с прямым порядком байтов (с добавлением суффикса «-le»), либо версию с прямым порядком байтов (с добавлением суффикса «be»).

Как определить длину байта строки в кодировке utf-8 в Python?

Я работаю с загрузками Amazon S3 и испытываю проблемы с слишком длинными именами ключей. S3 ограничивает длину ключа байтами, а не символами.

имя ключа представляет собой последовательность символов Юникода, кодировка UTF-8 имеет длину не более 1024 байт.

Я также пытаюсь встроить метаданные в имя файла, поэтому мне нужно иметь возможность вычислить текущую длину байта строки с помощью Python, чтобы сделать конечно, метаданные не делают ключ слишком длинным (в этом случае мне придется использовать отдельный файл метаданных).

Как определить длину байта строки в кодировке utf-8? Опять же, меня не интересует количество знаков. скорее фактическая длина байта, используемая для хранения строки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *