Par exemple, j'obtiens 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 puis-je utiliser pour calculer la taille de la chaîne?
python
string
string-length
babykick
la source
la source
Réponses:
Si vous parlez de la longueur de la chaîne, vous pouvez utiliser
len()
:Si vous avez besoin de la taille de la chaîne en octets, vous avez besoin de
sys.getsizeof()
:N'appelez pas non plus votre variable chaîne
str
. Il masque lastr()
fonction intégrée.la source
sys.getsizeof
renvoie le nombre d'octets que l'objet Python occupe en mémoire. Cela ne sera en aucun cas utile pour écrire dans un fichier.len(s.encode('utf8'))
ou tout autre encodage qui sera utilisé lors de l'écriture dans le fichier. De plus, s'ils veulent également un null de fin, ils devront ajouter 1 pour cela.Python 3:
La réponse de user225312 est correcte:
A. Pour compter le nombre de caractères dans l'
str
objet, vous pouvez utiliser lalen()
fonction:B. Pour obtenir la taille de la mémoire en octets alloués pour stocker
str
objet, vous pouvez utiliser lasys.getsizeof()
fonctionPython 2:
Cela se complique pour Python 2.
A. La
len()
fonction en Python 2 renvoie le nombre d'octets alloués pour stocker les caractères codés dans unstr
objet.Parfois, il sera égal au nombre de caractères:
Mais parfois, ce n'est pas le cas:
C'est parce que
str
peut utiliser l' encodage de longueur variable en interne. Donc, pour compter les caractères,str
vous devez savoir quel encodage votrestr
objet utilise. Ensuite, vous pouvez le convertir enunicode
objet et obtenir le nombre de caractères:B. La
sys.getsizeof()
fonction fait la même chose que dans Python 3 - elle retourne le nombre d'octets alloués pour stocker l'ensemble de l'objet chaînela source
la source
Vous pouvez également utiliser str.len () pour compter la longueur de l'élément dans la colonne
la source
La manière la 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.la source