web-dev-qa-db-fra.com

Comment obtenir la taille d'une chaîne en Python?

Par exemple, je reçois une chaîne:

str = "please answer my question"

Je veux l'écrire dans un fichier.

Mais j'ai besoin de connaître la taille de la chaîne avant de l'écrire dans le fichier. Quelle fonction puis-je utiliser pour calculer la taille de la chaîne?

137
babykick

Si vous parlez de la longueur de la chaîne, vous pouvez utiliser len() :

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

Si vous avez besoin de la taille de la chaîne en octets, vous avez besoin de sys.getsizeof() :

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

De même, n'appelez pas votre variable chaîne str. Il ombrage la fonction str() intégrée.

227
user225312

Python 3. *:

La réponse de l'utilisateur225312 est correcte:

A. Pour compter le nombre de caractères dans l'objet str, vous pouvez utiliser la fonction len():

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

B. Pour obtenir la taille de la mémoire en octets allouée au magasin de l'objet str, vous pouvez utiliser la fonction sys.getsizeof().

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

Python 2. *:

Cela devient compliqué pour Python 2. *.

A. La fonction len() dans Python 2 renvoie le nombre d'octets alloués au stockage caractères codés dans un objet str.

Parfois, il sera égal au nombre de caractères:

>>> print(len('abc'))
3

Mais parfois, ça ne va pas:

>>> print(len('йцы')) #String contains cyrillic symbols
6

En effet, str peut utiliser codage à longueur variable en interne. Ainsi, pour compter les caractères dans str, vous devez savoir quel codage votre objet str utilise. Ensuite, vous pouvez le convertir en unicode objet et obtenir le nombre de caractères:

>>> print(len('йцы'.decode('utf8'))) #String contains Cyrillic symbols 
3

B. La fonction sys.getsizeof() fait la même chose que dans Python 3 - renvoie le nombre d'octets alloués à la sauvegarde. l'objet chaîne complet

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

P.S. J'ai testé mes exemples de code sous Anaconda Python sous Windows 32 bits

32
Igor Bendrup
>>> s = 'abcd'
>>> len(s)
4
8
Michal Chruszcz

Vous pouvez également utiliser str.len () pour compter la longueur d’un élément dans la colonne.

data['name of column'].str.len() 
2
Vladimir Gavrysh

Le plus Pythonic moyen est d’utiliser la len(). Gardez à l'esprit que le caractère '\' dans les séquences d'échappement n'est pas compté et peut être dangereux s'il n'est pas utilisé correctement.

>>> 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
1
Robert Grossman