Python, split per dividere una stringa separata da virgole, rimuovere gli spazi bianchi e convertire in una lista

Attività commerciale

Quando si divide una stringa separata da virgole in una lista in Python, se non ci sono spazi in mezzo, funziona solo split(). Se ci sono spazi, è utile combinarlo con strip() per rimuovere gli spazi extra. Inoltre, usare la notazione di comprensione della lista è un modo intelligente di scrivere.

In questa sezione, spieghiamo innanzitutto quanto segue.

  • Divide una stringa con un delimitatore specificato e la restituisce come listasplit()
  • Rimuove i caratteri extra dall'inizio e dalla fine di una stringa.strip()
  • Notazione di comprensione della lista per applicare funzioni e metodi agli elementi della lista.

Mostra anche come fare una lista di stringhe separate da spazi e virgole rimuovendo gli spazi, come mostrato di seguito.
'one, two, three'

Inoltre, discuteremo quanto segue

  • Come ottenerlo come elenco di numeri
  • Come usare join() per unire una lista e renderla di nuovo una stringa

split(): Divide una stringa con un delimitatore specificato e la restituisce come lista

Usando il metodo split() per le stringhe, potete dividere una stringa con un delimitatore specificato e ottenerla come lista (array). Il delimitatore specificato può essere specificato dal seguente argomento.sep

Se l'argomento sep è omesso e nessun delimitatore è specificato, divide la stringa per spazi e restituisce una lista. Spazi consecutivi e tabulazioni divideranno anche la lista, quindi se volete fare una lista di stringhe delimitate da tabulazioni, potete usare split() senza l'argomento.

s = 'one two three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one two        three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one\ttwo\tthree'
l = s.split()
print(l)
# ['one', 'two', 'three']

Se viene specificato un delimitatore nell'argomento sep, divide la lista per quella stringa e restituisce una lista.

s = 'one::two::three'
l = s.split('::')
print(l)
# ['one', 'two', 'three']

Nel caso di una stringa separata da virgola, se non c'è spazio bianco extra, non c'è problema, ma se si esegue split() con una virgola come delimitatore per una stringa separata da una virgola + spazio bianco, ci si ritroverà con una lista di stringhe con spazio bianco lasciato all'inizio.

s = 'one,two,three'
l = s.split(',')
print(l)
# ['one', 'two', 'three']

s = 'one, two, three'
l = s.split(',')
print(l)
# ['one', ' two', ' three']

Puoi usare una virgola + spazio come delimitatore come segue, ma non funzionerà se il numero di spazi nella stringa originale è diverso.', '

s = 'one, two, three'
l = s.split(', ')
print(l)
# ['one', 'two', 'three']

s = 'one, two,  three'
l = s.split(', ')
print(l)
# ['one', 'two', ' three']

Il metodo strip() delle stringhe, che sarà spiegato in seguito, può essere usato per trattare due spazi.

strip(): Rimuove i caratteri extra dall'inizio e dalla fine di una stringa.

strip() è un metodo per rimuovere i caratteri extra dall'inizio e dalla fine di una stringa.

Se l'argomento è omesso, viene restituita una nuova stringa con i caratteri di spazio bianco rimossi. La stringa originale non viene modificata.

s = '  one  '
print(s.strip())
# one

print(s)
#   one  

Se viene specificata una stringa come argomento, i caratteri contenuti nella stringa verranno rimossi.

s = '-+-one-+-'
print(s.strip('-+'))
# one

In questo caso, gli spazi non vengono rimossi. Pertanto, se volete rimuovere anche gli spazi bianchi, passate una stringa che includa spazi come argomento, come mostrato di seguito.'-+ '

s = '-+- one -+-'
print(s.strip('-+'))
#  one 

s = '-+- one -+-'
print(s.strip('-+ '))
# one

strip() gestisce entrambe le estremità, ma sono disponibili anche le seguenti funzioni.

  • lstrip():Il processo è solo l'inizio
  • rstrip():Elabora solo la fine della linea.

Notazione di comprensione della lista: applicare funzioni e metodi agli elementi della lista

Se volete applicare una funzione o un metodo agli elementi di una lista, è intelligente usare la notazione di comprensione della lista invece del ciclo for se volete ottenere la lista alla fine.

Qui applichiamo strip() alla lista ottenuta dividendo la stringa con split(). Gli spazi bianchi extra in una stringa separata da virgole che contiene spazi bianchi possono essere rimossi per creare una lista.

s = 'one, two, three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

Quando questo viene applicato a una stringa vuota, si può ottenere una lista con una singola stringa vuota come elemento.

s = ''
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['']
# 1

Se volete ottenere una lista vuota per una stringa vuota, potete impostare un ramo condizionale nella notazione di comprensione della lista.

s = ''
l = [x.strip() for x in s.split(',') if not s == '']
print(l)
print(len(l))
# []
# 0

'one, , three'
Inoltre, se manca un elemento separato da virgole, come descritto sopra, il primo metodo lo elencherà come un elemento stringa vuoto.

s = 'one, , three'
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['one', '', 'three']
# 3

Se volete ignorare le parti mancanti, potete impostare un ramo condizionale nella notazione di comprensione della lista.

s = 'one, ,three'
l = [x.strip() for x in s.split(',') if not x.strip() == '']
print(l)
print(len(l))
# ['one', 'three']
# 2

Ottieni come elenco di numeri

Se volete ottenere una stringa di numeri separati da virgola come una lista di numeri invece di una stringa, applicate int() o float() per convertire la stringa in un numero nella notazione di comprensione della lista.

s = '1, 2, 3, 4'
l = [x.strip() for x in s.split(',')]
print(l)
print(type(l[0]))
# ['1', '2', '3', '4']
# <class 'str'>

s = '1, 2, 3, 4'
l = [int(x.strip()) for x in s.split(',')]
print(l)
print(type(l[0]))
# [1, 2, 3, 4]
# <class 'int'>

join(): Unisce una lista e la ottiene come stringa

Nel modello opposto, se volete unire una lista e ottenere stringhe separate da un delimitatore specifico, usate il metodo join().

È facile fare un errore, ma notate che join() è un metodo per le stringhe, non per le liste. La lista è specificata come argomento.

s = 'one, two,  three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

print(','.join(l))
# one,two,three

print('::'.join(l))
# one::two::three

Potete scriverlo in una riga come segue.

s = 'one, two,  three'
s_new = '-'.join([x.strip() for x in s.split(',')])
print(s_new)
# one-two-three

Se volete solo cambiare un delimitatore fisso, è più facile sostituirlo con il metodo replace().

s = 'one,two,three'
s_new = s.replace(',', '+')
print(s_new)
# one+two+three
Copied title and URL