Например, я получаю строку:
str = "please answer my question"
Я хочу записать это в файл.
Но мне нужно знать размер строки перед записью строки в файл. Какую функцию я могу использовать для расчета размера строки?
Например, я получаю строку:
str = "please answer my question"
Я хочу записать это в файл.
Но мне нужно знать размер строки перед записью строки в файл. Какую функцию я могу использовать для расчета размера строки?
Ответы:
Если вы говорите о длине строки, вы можете использовать len()
:
>>> s = 'please answer my question'
>>> len(s) # number of characters in s
25
Если вам нужен размер строки в байтах, вам нужно sys.getsizeof()
:
>>> import sys
>>> sys.getsizeof(s)
58
Кроме того, не вызывайте строковую переменную str
. Затеняет встроенную str()
функцию.
sys.getsizeof
возвращает количество байтов, которые объект Python занимает в памяти. Это не будет полезно для записи в файл при любых обстоятельствах.
len(s.encode('utf8'))
или иное кодирование, которое будет использоваться при записи в файл. Кроме того, если они также хотят завершающий ноль, им нужно будет добавить 1 для этого.
Ответ user225312 правильный:
A. Для подсчета количества символов в str
объекте вы можете использовать len()
функцию:
>>> print(len('please anwser my question'))
25
B. Чтобы получить объем памяти в байтах, выделенный для str
объекта хранения , вы можете использовать sys.getsizeof()
функцию
>>> from sys import getsizeof
>>> print(getsizeof('please anwser my question'))
50
Это становится сложным для Python 2.
А.len()
функция в Python 2 возвращает кол - во байтах , выделенных для хранения закодированных символов в str
объекте.
Иногда это будет равно количеству символов:
>>> print(len('abc'))
3
Но иногда это не будет:
>>> print(len('йцы')) # String contains Cyrillic symbols
6
Это потому, что str
можно использовать внутреннюю кодировку переменной длины . Таким образом, для подсчета символов str
вы должны знать, какую кодировку использует ваш str
объект. Затем вы можете преобразовать его в unicode
объект и получить количество символов:
>>> print(len('йцы'.decode('utf8'))) #String contains Cyrillic symbols
3
B.sys.getsizeof()
функция делает то же самое , как и в Python 3 - возвращает количество байт , выделенных для хранения всего объекта строки
>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32
>>> s = 'abcd'
>>> len(s)
4
Вы также можете использовать str.len () для подсчета длины элемента в столбце.
data['name of column'].str.len()
Самый Pythonic способ заключается в использовании len()
. Имейте в виду, что символ «\» в escape-последовательностях не учитывается и может быть опасным, если не используется правильно.
>>> len('foo')
3
>>> len('\foo')
3
>>> len('\xoo')
File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape