Как получить размер строки в Python?

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

str = "please answer my question"

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

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


person babykick    schedule 11.02.2011    source источник
comment
какую функцию я могу использовать для вычисления размера строки? Какой учебник вы используете для изучения Python? Пожалуйста, обновите вопрос, указав некоторую информацию о том, где и как вы изучаете Python.   -  person S.Lott    schedule 11.02.2011
comment
я изучаю python самостоятельно, теперь я знаю, что len (str) может возвращать размер строки, размер зависит от кодирования строки.   -  person babykick    schedule 11.02.2011
comment
Каков будет размер файла после его записи? Предположим, что перед записью файл был нулевого размера.   -  person Vicky Gupta    schedule 02.11.2020


Ответы (5)


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

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

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

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

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

person user225312    schedule 11.02.2011
comment
sys.getsizeof возвращает количество байтов, которое объект Python занимает в памяти. Это не будет полезно для записи в файл ни при каких обстоятельствах. - person Duncan; 11.02.2011
comment
спасибо, но sys.getsizeof(s) - это просто размер файла? или размер объекта python? - person babykick; 11.02.2011
comment
@Duncan, так как насчет того, чтобы предложить, что будет полезно вместо этого? - person cryanbhu; 31.07.2018
comment
@cryanbhu Я не знаю, почему OP нужен размер, и это повлияет на ответ, но, вероятно, наиболее полезным будет len(s.encode('utf8')) или любая другая кодировка, которая будет использоваться при записи в файл. Кроме того, если им также нужен завершающий нуль, им нужно будет добавить для этого 1. - person Duncan; 31.07.2018
comment
@cryanbhu len() должно быть достаточно. Символ — это один байт (в формате ascii). Если он будет закодирован не-ascii-символами, просто передайте кодировку, как предложил @Duncan. - person sixty4bit; 23.11.2020

Питон 3:

ответ 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

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

>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32
person Igor Bendrup    schedule 16.05.2016

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

data['name of column'].str.len() 
person Vladimir Gavrysh    schedule 02.09.2018

Наиболее Pythonic способ — использовать len(). Имейте в виду, что символ '\' в управляющих последовательностях не учитывается и может быть опасен при неправильном использовании.

>>> 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
person Robert Grossman    schedule 11.03.2017

Вы хотите найти длину строки на языке Python? Если вы хотите найти длину слова, вы можете использовать функцию len.

string = input("Enter the string : ")

print("The string length is : ",len(string))

ВЫХОД : -

Введите строку: вирусный

Длина строки: 5

person Viral Ghodadara    schedule 15.10.2020
comment
1 - зачем добавлять ответ, аналогичный принятому? 2 - ваш вывод аналогичен вашему коду, отредактируйте его или рассмотрите возможность удаления этого лишнего и неполного ответа... - person Ruli; 15.10.2020