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.getsizeof
retorna 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 str
objeto, 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 str
objeto 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 str
objeto.
À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 str
pode usar codificação de comprimento variável internamente. Portanto, para contar caracteres, str
você deve saber qual codificação seu str
objeto está usando. Então você pode convertê-lo em unicode
objeto 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