Come utilizzare il metodo split() in Python

In questo tutorial imparerai come usare il metodo split() di Python per dividere una stringa in un elenco di stringhe.

Quando si lavora con le stringhe Python, è possibile utilizzare diversi metodi di stringa incorporati per ottenere copie modificate delle stringhe, ad esempio la conversione in maiuscolo, l’ordinamento di una stringa e altro. Uno di questi metodi è .split() che divide una stringa Python in un elenco di stringhe e ne impareremo di più codificando esempi.

Alla fine del tutorial, avrai imparato quanto segue:

  • come funziona il metodo .split()
  • come personalizzare la divisione usando i parametri sep e maxsplit

Cominciamo!

Sintassi del metodo split() in Python

Ecco la sintassi generale per utilizzare il metodo split() di Python su qualsiasi stringa valida:

string.split(sep, maxsplit)

# Parameters:
sep, maxsplit

# Returns:
A list of strings

Qui, la stringa può essere qualsiasi stringa Python valida.

Entrambi i parametri sep e maxsplit sono opzionali.

  • sep denota il separatore su cui desideri dividere la stringa. Dovrebbe essere specificato come una stringa.
  • maxsplit è un numero intero che specifica quante volte vuoi dividere la stringa.

I loro valori predefiniti vengono utilizzati quando non si forniscono parametri facoltativi.

  • Quando non fornisci il valore sep in modo esplicito, gli spazi bianchi vengono utilizzati come separatore predefinito.
  • Quando non specifichi il valore per maxsplit, il valore predefinito è -1, il che significa che la stringa verrà divisa su tutte le occorrenze del separatore.

Esprimendo la sintassi in un linguaggio semplice:

Il metodo split() divide una stringa maxsplit numero di volte al verificarsi del separatore specificato dal parametro sep.

Ora che abbiamo appreso la sintassi del metodo split() di Python, procediamo con il codice di alcuni esempi.

Dividi una stringa Python in un elenco di stringhe

Se hai Python 3 installato sulla tua macchina, puoi codificare con questo tutorial eseguendo i seguenti frammenti di codice in un Python REPL.

Per avviare REPL, eseguire uno dei seguenti comandi dal terminale:

$ python
$ python -i

▶️ Puoi anche provare questi esempi sull’editor Python di winadmin.it.

In questo esempio py_str è una stringa Python. Chiamiamo il metodo .split() su py_str senza alcun parametro e osserviamo l’output.

py_str = "Learn how to use split() in Python"
py_str.split()

# Output
['Learn', 'how', 'to', 'use', 'split()', 'in', 'Python']

Come visto sopra, la stringa viene divisa su tutte le occorrenze di spazi bianchi.

Dividi una stringa Python al verificarsi di separatori

# 1. Come primo esempio, dividiamo la stringa py_str con doppi underscore (__) come separatore.

py_str = "All__the__best"
py_str.split(sep='__')

# Output
['All', 'the', 'best']

#2. Facciamo un altro esempio. Qui, py_str ha tre frasi, ciascuna terminata da un punto (.).

py_str = "I love coding. Python is cool. I'm learning Python in 2022"
py_str.split(sep='.')

# Output
['I love coding', ' Python is cool', " I'm learning Python in 2022"]

▶️ Quando chiamiamo il metodo .split() su questa stringa, con ‘.’ come separatore, l’elenco risultante ha tre frasi, come si vede nella cella di codice sopra.

#3. Facciamo alcune domande:

  • Cosa succede quando il separatore non compare mai nella stringa?
  • Come avverrà la divisione in questo caso?

Ecco un esempio:

Proviamo a dividere py_str al verificarsi di asterisco

py_str = "This line contains no asterisk."
py_str.split(sep='*')

# Output
['This line contains no asterisk.']

-che non si verifica.

Poiché in questo caso non è possibile dividere, l’elenco risultante contiene l’intera stringa.

Nella prossima sezione vedremo come possiamo usare il metodo split() sul contenuto di un file di testo.

Dividi il contenuto di un file Python

Quando si lavora con file di testo in Python, potrebbe essere necessario dividere il contenuto del file, in base a un separatore, per un’elaborazione più semplice.

Ecco un esempio di file di testo:

with open('sample.txt') as f:
  content = f.read()
  str_list= content.split(sep='...')
  for string in str_list:
    print(string,end='')

Il frammento di codice seguente mostra come utilizzare la divisione nel contenuto del file di testo di esempio.

  • Il codice sopra fa quanto segue:
  • Usa il gestore di contesto con per aprire e lavorare con il file di testo ‘sample.txt’.
  • Legge il contenuto del file utilizzando il metodo .read() sull’oggetto file f.
  • Suddivide il contenuto all’occorrenza dei puntini di sospensione del separatore (…) in un elenco str_list.

Scorre str_list per accedere a ciascuna stringa e stamparla.

# Output
This is a sample text file
It contains info on
Getting started with <a href="https://winadmin.it.com/pcap-certification/">programming in Python</a>
According to the 2022 StackOverflow Developer Survey
Python is one of the most-loved programming languages
So what are you waiting for? Start learning!

Ecco l’output.

Come esercizio, puoi provare a dividere il contenuto di un file di testo su qualsiasi separatore di tua scelta.

Dividi una stringa Python in blocchi

Quando dividi una stringa una volta, otterrai due blocchi; dividendolo due volte otterrai tre.

📋 In generale, quando dividi una stringa K volte, otterrai K + 1 pezzi.

Questo è illustrato di seguito.

Come funziona il parametro maxsplit (immagine dell’autore)

py_str = "Chunk#1  I'm a larger chunk, Chunk#2"
py_str.split(maxsplit=1)

# Output
['Chunk#1', "I'm a larger chunk, Chunk#2"]

# 1. Impostiamo maxsplit uguale a 1. Non abbiamo specificato un separatore, quindi la divisione avverrà sugli spazi bianchi per impostazione predefinita.

Anche se il secondo blocco nell’elenco contiene spazi bianchi, la divisione non si verifica perché la divisione è ora controllata dal valore maxsplit di uno.

py_str = "Chunk#1 Chunk#2 I'm one large Chunk#3, even though I contain whitespaces"
py_str.split(maxsplit=2)

# Output
['Chunk#1',
 'Chunk#2',
 "I'm one large Chunk#3, even though I contain whitespaces"]

#2. Aumentiamo il valore maxsplit a 2 e osserviamo come si verifica la divisione per l’esempio seguente.

Come nell’esempio precedente, il valore maxsplit decide il numero di divisioni effettuate. Otteniamo tre blocchi, suddivisi dopo la prima e la seconda occorrenza di spazi bianchi.

#3. Cosa succede se imposti maxsplit su un valore maggiore del numero di occorrenze del separatore?

py_str = "There, are, only, 4, commas"
py_str.split(maxsplit=8)

# Output
['There,', 'are,', 'only,', '4,', 'commas']

Nella cella di codice seguente, impostiamo maxsplit su 8 quando la stringa contiene solo quattro virgole.

Qui, il metodo split divide py_str su tutte e quattro le occorrenze di una virgola. Anche se provi a impostare maxsplit su un valore inferiore a -1, ad esempio -7, la divisione verrà eseguita su tutte le occorrenze del separatore.

Quindi, mettiamo insieme tutto ciò che abbiamo imparato e utilizziamo entrambi i parametri sep maxsplit.

Dividi una stringa Python in blocchi su un separatore

py_str = "Chunk#1, Chunk#2, I'm one large Chunk#3, even though I contain a ,"
py_str.split(sep = ',',maxsplit=2)

# Output
['Chunk#1', ' Chunk#2', " I'm one large Chunk#3, even though I contain a ,"]

# 1. Supponiamo di dover dividere la stringa py_str in tre blocchi all’occorrenza di virgola (,). Per fare ciò, possiamo impostare il valore sep su ‘,’ e il valore maxsplit su 2 nella chiamata al metodo.

Come si vede nell’output, la divisione si verifica due volte sulle prime due occorrenze del separatore.

#2. Il separatore sep non deve essere sempre un carattere speciale. Può essere una sequenza di caratteri speciali, come i doppi caratteri di sottolineatura che abbiamo usato in precedenza, o potrebbe anche essere una sottostringa.

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=2)

# Output
['You need to ', ' data structures, ', ' algorithms, and learn more!']

Impostiamo la stringa ‘learn’ come argomento sep e vediamo come si verifica la divisione per valori variabili di maxsplit. Qui, impostiamo maxsplit su 2.

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=-1)

# Output
['You need to ', ' data structures, ', ' algorithms, and ', ' more!']

#3. Se desideri dividere py_str su tutte le occorrenze della stringa ‘learn’, possiamo chiamare questo metodo .split() impostando sep = ‘learn’, senza il parametro maxsplit. Ciò equivale a impostare in modo esplicito il valore maxsplit su -1, come mostrato nella cella di codice seguente.

Vediamo che la divisione si verifica in tutte le occorrenze di ‘imparare’.

Avvolgendo

Spero che tu abbia ora capito come usare il metodo .split() con le stringhe Python.

  • Ecco un riassunto di questo tutorial:
  • Il metodo .split() integrato in Python divide una stringa in un elenco di stringhe.
  • Usa string.split() per dividere la stringa su tutte le occorrenze del separatore predefinito, spazio bianco.

Utilizzare string.split(sep,maxsplit) per dividere la stringa maxsplit numero di volte al verificarsi del separatore sep. L’elenco risultante contiene maxsplit+1 elementi.

Come passaggio successivo, puoi imparare come verificare se le stringhe Python sono palindromi o anagrammi.