Как получить размер строки в Python? - PullRequest
132 голосов
/ 11 февраля 2011

Например, я получаю строку:

str = "please answer my question"

Я хочу записать ее в файл.

Но мне нужно знать размер строки перед записью строки вфайл.Какую функцию я могу использовать для расчета размера строки?

Ответы [ 5 ]

221 голосов
/ 11 февраля 2011

Если вы говорите о длине строки, вы можете использовать len():

>>> s = 'please answer my question'
>>> len(s)  # number of characters in s
25

Если вам нужен размер строки в байтах, вам нужно sys.getsizeof():

>>> import sys
>>> sys.getsizeof(s)
58

Кроме того, не вызывайте строковую переменную str.Затеняет встроенную функцию str().

32 голосов
/ 16 мая 2016

Python 3. *:

Ответ пользователя 222512 правильный:

A. Для подсчета количества символов в str объекте вы можете использовать len() function:

>>> print(len('please anwser my question'))
25

B. Чтобы получить объем памяти в байтах, выделенный для хранения str объекта, вы можете использовать sys.getsizeof() function

>>> from sys import getsizeof
>>> print(getsizeof('please anwser my question'))
50

Python 2. *:

Это становится сложным для Python 2. *.

A. Функция 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() делает то же самое, что и в Python3 - возвращает количество байтов, выделенных для хранения целого строкового объекта

>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32

PS Я тестировал примеры кода под Anaconda Python на 32-битнойWindows

8 голосов
/ 11 февраля 2011
>>> s = 'abcd'
>>> len(s)
4
2 голосов
/ 02 сентября 2018

Вы также можете использовать str.len () для подсчета длины элемента в столбце

data['name of column'].str.len() 
1 голос
/ 11 марта 2017

Самый 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
...