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?
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.
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
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
Vous pouvez également utiliser str.len () pour compter la longueur de l'élément dans la colonne
data['name of column'].str.len()