Estrai sottostringa da una stringa in Python

Vaibhav Vaibhav 22 giugno 2021
  1. Estrai la sottostringa usando la suddivisione in stringhe in Python
  2. Estrai sottostringa usando il costruttore slice() in Python
  3. Estrai sottostringa usando l’espressione regolare in Python
Estrai sottostringa da una stringa in Python

La stringa è una sequenza di caratteri. Ci occupiamo di stringhe tutto il tempo, non importa se stiamo facendo sviluppo di software o programmazione competitiva. A volte, durante la scrittura di programmi, dobbiamo accedere a sottoparti di una stringa. Queste sottoparti sono più comunemente note come sottostringhe. Una sottostringa è un sottoinsieme di una stringa.

In Python, possiamo eseguire facilmente questa operazione utilizzando l’affettamento di stringhe o utilizzando espressioni regolari o regex.

Estrai la sottostringa usando la suddivisione in stringhe in Python

Ci sono alcuni modi per eseguire il taglio delle stringhe in Python. L’indicizzazione è il metodo più semplice e più comunemente utilizzato. Fare riferimento al codice seguente.

myString = "Mississippi"
print(myString[:])  # Line 1
print(myString[4:])  # Line 2
print(myString[:8])  # Line 3
print(myString[2:7])  # Line 4
print(myString[4:-1])  # Line 5
print(myString[-6:-1])  # Line 6

Produzione:

Mississippi
issippi
Mississi
ssiss
issipp
ssipp

Nel codice sopra, aggiungiamo parentesi [] alla fine della variabile che memorizza la stringa. Usiamo questa notazione per l’indicizzazione. All’interno di queste parentesi, aggiungiamo alcuni valori interi che rappresentano gli indici.

Questo è il formato delle parentesi quadre [start : stop : step] (separate da due punti (:)).

Per impostazione predefinita, il valore di start è 0 o il primo indice, il valore di stop è l’ultimo indice e il valore di step è 1. start rappresenta l’indice iniziale della sottostringa, stop rappresenta l’indice finale della sottostringa e step rappresenta il valore da usare per l’incremento dopo ogni indice.

La sottostringa restituita è in realtà tra l’indice start e l’indice stop - 1 perché l’indicizzazione inizia da 0 in Python. Quindi, se desideriamo recuperare Miss da Mississippi, dovremmo usare [0 : 4]

Le parentesi non possono essere vuote. Se desideri utilizzare i valori predefiniti, la quantità richiesta di due punti : dovrebbe essere aggiunta con spazi intermedi per indicare a quale parametro ti riferisci. Fare riferimento al seguente elenco per una migliore comprensione.

  • [:] -> Restituisce l’intera stringa.
  • [4 : ] -> Restituisce una sottostringa a partire dall’indice 4 fino all’ultimo indice.
  • [ : 8] -> Restituisce una sottostringa a partire dall’indice 0 fino all’indice 7.
  • [2 : 7] -> Restituisce una sottostringa a partire dall’indice 2 fino all’indice 6.
  • [4 : -1] -> Restituisce una sottostringa a partire dall’indice 4 fino al penultimo indice. -1 può essere usato per definire l’ultimo indice in Python.
  • [-6 : -1] -> Restituisce una sottostringa a partire dal sesto indice dalla fine fino al penultimo indice.

Estrai sottostringa usando il costruttore slice() in Python

Invece di menzionare gli indici all’interno delle parentesi, possiamo usare il costruttore slice() per creare un oggetto slice per suddividere una stringa o qualsiasi altra sequenza come una lista o una tupla.

Il costruttore slice(start, stop, step) accetta tre parametri, vale a dire, start, stop e step. Significano esattamente lo stesso come spiegato sopra.

Il funzionamento di slice è leggermente diverso rispetto alla notazione tra parentesi. L’oggetto slice viene inserito all’interno delle parentesi della variabile stringa in questo modo myString[<'slice' object>].

Se un singolo valore intero, diciamo x, viene fornito al costruttore slice() e viene ulteriormente utilizzato per la suddivisione dell’indice, verrà recuperata una sottostringa a partire dall’indice 0 fino all’indice x - 1. Fare riferimento al codice seguente.

myString = "Mississippi"
slice1 = slice(3)
slice2 = slice(4)
slice3 = slice(0, 8)
slice4 = slice(2, 7)
slice5 = slice(4, -1)
slice6 = slice(-6, -1)
print(myString[slice1])
print(myString[slice2])
print(myString[slice3])
print(myString[slice4])
print(myString[slice5])
print(myString[slice6])

Produzione:

Mis
Miss
Mississi
ssiss
issipp
ssipp

Gli output ricevuti sono autoesplicativi. Gli indici seguono le stesse regole definite per la notazione tra parentesi.

Estrai sottostringa usando l’espressione regolare in Python

Per le espressioni regolari, useremo il pacchetto integrato di Python re.

import re

string = "123AAAMississippiZZZ123"

try:
    found = re.search("AAA(.+?)ZZZ", string).group(1)
    print(found)
except AttributeError:
    pass

Produzione:

Mississippi

Nel codice precedente, la funzione search() cerca la prima posizione del pattern fornito come argomento nella stringa passata. Restituisce un oggetto Match. Un oggetto Match ha molti attributi che definiscono l’output come lo span della sottostringa o gli indici di inizio e fine della sottostringa.

print(dir(re.search('AAA(.+?)ZZZ', string))) restituirà tutti gli attributi dell’oggetto Match. Notare che alcuni attributi potrebbero mancare perché quando si usa dir(), viene chiamato il metodo __dir__(), e questo metodo restituisce una lista di tutti gli attributi. E questo metodo è modificabile o sovrascrivibile.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Articolo correlato - Python String