HOWTO · Python

Verifica che la variabile sia una stringa o meno in Python

Questo tutorial mostra come verificare se una variabile è una stringa in Python

In questa pagina

Il tipo di dati stringa viene utilizzato per rappresentare una raccolta di caratteri. Questo tutorial discuterà come verificare se una variabile è di tipo stringa o meno.

Usa la funzione type() per verificare se una variabile è una stringa o meno

La funzione type() restituisce il tipo di classe della variabile passata. Il codice seguente mostra come utilizzare questa funzione per verificare se una variabile è una stringa o meno.

value = "Yes String"
if type(value) == str:
    print("True")
else:
    print("False")

Produzione:

True

Tuttavia, vale la pena notare che questo metodo è generalmente sconsigliato ed è definito unidiomatico in Python. Il motivo è che l’operatore == confronta la variabile solo per la classe stringa e restituirà False per tutte le sue sottoclassi.

Usa la funzione isinstance() per verificare se una variabile è una stringa o meno

È quindi incoraggiato l’uso della funzione isinstance() rispetto al tradizionale type(). La funzione isinstance() controlla se un oggetto appartiene alla sottoclasse specificata. Il seguente frammento di codice spiegherà come possiamo usarlo per verificare la presenza di oggetti stringa.

value = "Yes String"
if isinstance(value, str):
    print("True")
else:
    print("False")

Produzione:

True

In Python 2, possiamo usare la classe basestring, che è una classe astratta per str e unicode, per verificare se un oggetto è un’istanza di str o unicode. Per esempio,

value = "Yes String"
if isinstance(value, basestring):
    print("True")
else:
    print("False")

Produzione:

True

Per usare il metodo sopra in Python 3, possiamo usare il modulo six. Questo modulo ha funzioni che ci permettono di scrivere codice compatibile sia con Python 2 che con 3.

La funzione string_types() restituisce tutti i possibili tipi di dati stringa. Per esempio,

import six

value = "Yes String"
if isinstance(value, six.string_types):
    print("True")
else:
    print("False")

Produzione:

True