Come ottenere la dimensione di una stringa in Python?


157

Ad esempio, ottengo una stringa:

str = "please answer my question"

Voglio scriverlo su un file.

Ma devo conoscere la dimensione della stringa prima di scrivere la stringa nel file. Quale funzione posso usare per calcolare la dimensione della stringa?


1
"quale funzione posso usare per calcolare la dimensione della stringa"? Quale tutorial stai usando per imparare Python? Si prega di aggiornare la questione con alcune informazioni su dove e come si sta imparando Python.
S.Lott

1
imparo il pitone da solo, ora so che len (str) può restituire la dimensione della stringa, la dimensione dipende dalla codifica della str.
babykick,

Risposte:


258

Se stai parlando della lunghezza della stringa, puoi usare len():

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

Se hai bisogno della dimensione della stringa in byte, devi sys.getsizeof():

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

Inoltre, non chiamare la variabile stringa str. Ombreggia la str()funzione integrata.


33
sys.getsizeofrestituisce il numero di byte che l'oggetto Python occupa in memoria. Questo non sarà utile per scrivere su un file in nessuna circostanza.
Duncan,

grazie, ma sys.getsizeof (s) è solo la dimensione del file? o la dimensione dell'oggetto Python?
babykick,

@Duncan, allora che ne dici di suggerire cosa sarà utile invece?
cryanbhu,

4
@cryanbhu Non so perché l'OP volesse la dimensione e ciò avrebbe influenzato la risposta, ma probabilmente sarebbe più utile len(s.encode('utf8'))o qualunque altra codifica verrà utilizzata durante la scrittura nel file. Inoltre, se vogliono anche un null di terminazione, dovranno aggiungere 1 per quello.
Duncan,

33

Python 3:

La risposta di user225312 è corretta:

A. Per contare il numero di caratteri strnell'oggetto, puoi usare la len()funzione:

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

B. Per ottenere la dimensione della memoria in byte allocata per memorizzare l' stroggetto, è possibile utilizzare la sys.getsizeof()funzione

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

Python 2:

Diventa complicato per Python 2.

A. La len()funzione in Python 2 restituisce il conteggio dei byte allocati per memorizzare i caratteri codificati in un stroggetto.

A volte sarà uguale al conteggio dei personaggi:

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

Ma a volte non lo farà:

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

Questo perché è strpossibile utilizzare internamente la codifica a lunghezza variabile . Quindi, per contare i personaggi in strte dovresti sapere quale codifica strsta usando il tuo oggetto. Quindi puoi convertirlo in unicodeoggetto e ottenere il conteggio dei personaggi:

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

B. La sys.getsizeof()funzione fa la stessa cosa di Python 3: restituisce il conteggio dei byte allocati per memorizzare l'intero oggetto stringa

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


2

Puoi anche usare str.len () per contare la lunghezza dell'elemento nella colonna

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

1

Il modo più Pythonic è usare il len(). Tieni presente che il carattere "\" nelle sequenze di escape non viene conteggiato e può essere pericoloso se non utilizzato correttamente.

>>> 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.