Tutorial sul Python - Tipo di dati - Stringa di dati

  1. Creare stringhe in Python
  2. Elementi di accesso delle stringhe
  3. Operazioni con la stringa Python
  4. Funzioni integrate applicabili alle stringhe
  5. Formattazione delle stringhe Python
  6. Il metodo format()Stringa

In questa sezione tratteremo il tipo di dati Python String in questa sezione.

Una stringa è una sequenza di caratteri, rappresentata da dati binari nel computer. E in Python, una stringa è un insieme di caratteri unicode.

Info

Le corde di Python sono immutabili.

Creare stringhe in Python

Una stringa può essere creata usando virgolette singole o doppie. Una stringa a più righe può essere creata anche utilizzando le virgolette triple.

x = "String of characters"
x = """Multiline
string"""

Elementi di accesso delle stringhe

L’operatore di taglio [] e usato per accedere ai caratteri delle stringhe. L’indice parte da 0 come altri tipi di dati Python.

>>> x = 'Python Programming'
>>> print('x[0] =', x[0])
'P'
>>> print('x[4:15] =', x[4:15])
'on Programm'
>>> x[4] = 'l'
TypeError: 'str' object does not support item assignment
Attenzione

L’indice deve essere un numero intero, altrimenti si verificherà un TypeError.

Indicizzazione negativa

È consentito l’uso di indici negativi per accedere ai caratteri della stringa. Per esempio, l’indice -1 si riferisce all’ultimo carattere. Allo stesso modo, l’indice -2 si riferisce al penultimo carattere.

>>> s = "Python"
>>> print(s[-1])
'n'
>>> print(s[-2])
'o'
>>> print(s[-3])
'h'

Cancellare i caratteri da una stringa

Poiché le stringhe sono immutabili, i caratteri di una stringa non possono essere cancellati. Ma è possibile assegnare una nuova stringa allo stesso nome. Questo è dimostrato nel codice sottostante:

>>> s = 'Python'
>>> s = 'Program'
>>> s
'Program'

L’intera stringa può essere cancellata utilizzando la parola chiave del:

>>> del s

Operazioni con la stringa Python

Ci sono una serie di operazioni che possono essere eseguite sulle stringhe; alcune di esse sono le seguenti:

Concatenare due o più corde

Due o più stringhe possono essere concatenate utilizzando l’operatore +.

>>> s1 = 'Python '
>>> s2 = 'Programming'
>>> print(s1 + s2)
'Python Programming'

Se si scrivono due stringhe insieme, si concatenano le stringhe come fa l’operatore +:

>>> print('Python ' 'Programming')
'Python Programming'

La parentesi può anche essere usata per concatenare due stringhe quando le stringhe sono in più righe.

>>> s = ('Python '
     'Programming')
>>> s
'Pyhton Programming'

Iterare attraverso le stringhe

È possibile iterare attraverso una lista utilizzando il ciclo for loop:

s = 'Python'
for i in s:
    print(i)
P
y
t
h
o
n

Controllo delle stringhe di appartenenza

La parola chiave in è usata per verificare l’esistenza di una sottostringa in una stringa.

>>> s = 'Python'
>>> print('a' in s)
False
>>> print('o' in s)
True

Funzioni integrate applicabili alle stringhe

Le funzioni che vengono applicate ad altri tipi di sequenze possono essere applicabili anche alle stringhe. Le funzioni comunemente usate sono len() per trovare il numero di caratteri in una stringa, e enumerate() che restituisce un oggetto contenente indice e valore degli elementi della stringa come coppia.

Formattazione delle stringhe Python

Sequenza di fuga

Le sequenze di escape vengono utilizzate quando si vogliono stampare i simboli speciali (che hanno un significato speciale in Python) sul flusso di uscita. Ad esempio, se si vuole stampare:

James asked, "Do you know Andrew's place?"

Qui non si possono usare né le virgolette singole né quelle doppie, perché il testo contiene entrambe le virgolette. Se provi a mettere queste stringhe all’interno di virgolette singole o doppie, avrai SyntaxError.

>>> print("James asked, "Do you know Andrew's place?"")
SyntaxError: invalid syntax
>>> print('James asked, "Do you know Andrew's place?"')	  
SyntaxError: invalid syntax

La soluzione a questo problema è di usare sia le virgolette triple che le sequenze di escape. In Python, una sequenza di escape parte da una barra rovesciata. Una barra rovesciata è un’istruzione per l’interprete.

Se si utilizzano le virgolette singole nell’istruzione di stampa, allora tutte le singole virgolette del testo devono essere evacuate. Allo stesso modo, le doppie virgolette del testo devono essere sfuggite se si utilizzano le doppie virgolette per rappresentare una stringa.

#using triple quotation marks
print('''James asked, "Do you know Andrew's place?"''')

#escaping single quotes
print('James asked, "Do you know Andrew\'s place?"')

#escaping double quotes
print("James asked, \"Do you know Andrew's place?\"")

Si consideri la seguente tabella in cui sono descritte le sequenze di escape di Python:

Sequenza di escape Descrizione
\\ sfugge al contraccolpo
\' sfugge a singole citazioni
\" sfugge alle doppie virgolette
\a un allarme ASCII o un campanello
\b genera un backspace
\f genera Formfeed
\n genera una nuova linea.
\r ritorno in carrozza
\t genera una linguetta orizzontale
\v genera una linguetta verticale
ooo carattere ottale ooo
xHHH carattere esadecimale HH
>>> print("C:\\User\\Python36-32\\Lib")
C:\User\Python36-32\Lib
    
>>> print("First Line\nSecond Line")
First Line
Second Line

Raw String r to Ignore Escape Sequence

Si può ignorare la sequenza di escape in una stringa rendendola una stringa grezza che viene indicata da r o R prima della stringa.

In una stringa grezza le sequenze di escape vengono ignorate. Vedere il seguente esempio:

#without r
>>> print("C:\\User\\Python36-32\\Lib")
C:\User\Python36-32\Lib

#with r  
>>> print(r"C:\\User\\Python36-32\\Lib")
C:\\User\\Python36-32\\Lib

Si può vedere qui che la sequenza di escape viene ignorata.

Il metodo format()Stringa

Il metodo format() è un potente strumento per formattare stringhe. Nelle stringhe formattate, si hanno dei segnaposto {} che vengono sostituiti dal metodo format().

Gli argomenti posizionali e le parole chiave sono usati per specificare l’ordine della sostituzione.

#default placeholder
>>> s1 = "{}, {} and {}".format('Bread', 'Butter', 'Chocolate')
>>> print(s1)
'Bread, Butter and Chocolate'

#positional arguments
>>> s2 = "{1}, {2} and {0}".format('Bread', 'Butter', 'Chocolate')	  
>>> print(s2)
'Butter, Chocolate and Bread'

#keyword arguments
>>> s3 = "{a}, {x} and {c}".format(x = 'Bread', c = 'Butter', a = 'Chocolate')	  
>>> print(s3)
'Chocolate, Bread and Butter'