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 d'écrire la chaîne dans le fichier. Quelle fonction dois-je utiliser pour calculer la taille de la chaîne?

113
demandé sur emlai 2011-02-11 12:48:16

5 réponses

Si l'on parle 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 devez sys.getsizeof():

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

Aussi, n'appelez pas votre chaîne str. Il ombre le haut-str() Fonction.

200
répondu user225312 2016-05-31 05:12:20

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és au magasin str objet, vous pouvez utiliser sys.getsizeof() Fonction

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

Python 2.*:

Ça devient compliqué pour Python 2.*.

A. Le len() fonction en Python 2 renvoie le nombre d'octets alloués pour stocker codé caractères dans un objet str.

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

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

Mais parfois, ce ne sera pas le cas:

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

C'est parce que str peut utiliser encodage de longueur variable en interne. Donc, pour compter les caractères dans str, Vous devez savoir quel encodage utilise votre objet str. 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. Le sys.getsizeof() la fonction fait la même chose que dans Python 3 - il renvoie le nombre d'octets alloués pour stocker l'objet string entier

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

P.S. j'ai testé mes échantillons de code sous Anaconda Python sur Windows 32 bits

24
répondu Igor Bendrup 2017-06-13 00:40:38
>>> s = 'abcd'
>>> len(s)
4
7
répondu Michal Chruszcz 2011-02-11 09:52:51

Le moyen le plus pythonique est d'utiliser le 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
répondu Robert Grossman 2017-03-11 05:04:11

Vous pouvez également utiliser str.len () pour compter la longueur de l'élément dans la colonne

data['name of column'].str.len() 
0
répondu Vladimir Gavrysh 2018-09-02 03:33:50