Por exemplo, recebo uma string:
str = "please answer my question"
Eu quero gravá-lo em um arquivo.
Mas preciso saber o tamanho da string antes de gravá-la no arquivo. Que função posso usar para calcular o tamanho da string?
Por exemplo, recebo uma string:
str = "please answer my question"
Eu quero gravá-lo em um arquivo.
Mas preciso saber o tamanho da string antes de gravá-la no arquivo. Que função posso usar para calcular o tamanho da string?
Respostas:
Se você está falando sobre o comprimento da string, pode usar len():
>>> s = 'please answer my question'
>>> len(s) # number of characters in s
25
Se você precisar do tamanho da string em bytes, precisará de sys.getsizeof():
>>> import sys
>>> sys.getsizeof(s)
58
Além disso, não chame sua variável string str. Sombreia a str()função interna.
sys.getsizeofretorna o número de bytes que o objeto Python ocupa na memória. Isso não será útil para gravar em um arquivo em nenhuma circunstância.
len(s.encode('utf8'))ou qualquer outra codificação que será usada ao gravar no arquivo. Além disso, se eles também quiserem um nulo final, precisarão adicionar 1 para isso.
A resposta do usuário225312 está correta:
A. Para contar o número de caracteres no strobjeto, você pode usar a len()função:
>>> print(len('please anwser my question'))
25
B. Para obter o tamanho da memória em bytes alocados ao strobjeto de armazenamento , você pode usar a sys.getsizeof()função
>>> from sys import getsizeof
>>> print(getsizeof('please anwser my question'))
50
Fica complicado para o Python 2.
A. A len()função no Python 2 retorna a contagem de bytes alocados para armazenar caracteres codificados em um strobjeto.
Às vezes, será igual à contagem de caracteres:
>>> print(len('abc'))
3
Mas, às vezes, isso não acontece:
>>> print(len('йцы')) # String contains Cyrillic symbols
6
Isso porque strpode usar codificação de comprimento variável internamente. Portanto, para contar caracteres, strvocê deve saber qual codificação seu strobjeto está usando. Então você pode convertê-lo em unicodeobjeto e obter a contagem de caracteres:
>>> print(len('йцы'.decode('utf8'))) #String contains Cyrillic symbols
3
B. A sys.getsizeof()função faz a mesma coisa que no Python 3 - retorna a contagem de bytes alocados para armazenar todo o objeto da string
>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32
>>> s = 'abcd'
>>> len(s)
4
Você também pode usar str.len () para contar o comprimento do elemento na coluna
data['name of column'].str.len()
A maneira mais pitônica é usar o len(). Lembre-se de que o caractere '\' nas seqüências de escape não é contado e pode ser perigoso se não for usado corretamente.
>>> 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