Dividi una stringa con un delimitatore in python


195

Come dividere questa stringa dov'è __il delimitatore

MATCHES__STRING

Per ottenere un output di ['MATCHES', 'STRING']?



8
Vale la pena leggere i documenti standard di Python e cercare di capire alcuni programmi che altri hanno fatto per iniziare a comprendere le basi di Python. La pratica e la copia / modifica sono ottimi strumenti per imparare la lingua.
Tony Veijalainen,

Risposte:


327

Puoi usare la str.splitfunzione:string.split('__')

>>> "MATCHES__STRING".split("__")
['MATCHES', 'STRING']

1
Mi chiedevo, qual è la differenza tra il primo esempio (usando semplicemente split ()) e il secondo esempio (con un ciclo for)?
EndenDragon,

4
@EndenDragon Il ciclo for verrà automaticamente applicato x.strip()e restituirà un elenco di corrispondenze senza spazi bianchi su entrambi i lati. Il diavolo è nei dettagli.
Sébastien Vercammen,

Ehi, poiché questa è una domanda molto popolare, l'ho modificata per fare solo 1 domanda specifica e ho rimosso la parte con gli spazi attorno al delimitatore perché non era chiaro cosa si aspettasse che accadesse l'OP (dal momento che non c'era mai una domanda in la domanda). Penso che la domanda (e le risposte) siano più utili in questo modo, ma sentiti libero di annullare tutte le modifiche se non sei d'accordo.
Aran-Fey,

4

Potresti essere interessato al csvmodulo, che è progettato per file separati da virgola ma può essere facilmente modificato per utilizzare un delimitatore personalizzato.

import csv
csv.register_dialect( "myDialect", delimiter = "__", <other-options> )
lines = [ "MATCHES__STRING" ]

for row in csv.reader( lines ):
    ...

1

Quando nella stringa sono presenti due o più (nell'esempio di seguito ci sono tre) elementi, è possibile utilizzare la virgola per separare questi elementi:

date, time, event_name = ev.get_text(separator='@').split("@")

Dopo questa riga di codice, le tre variabili avranno valori da tre parti della variabile ev

Quindi, se la variabile ev contiene questa stringa e applichiamo il separatore '@':

Sa., 23. März @ 19: 00 @ Klavier + Orchestre: SPEZIAL

Quindi, dopo l'operazione split, la variabile

  • la data avrà valore "Sa., 23. März"
  • il tempo avrà valore "19:00"
  • event_name avrà valore "Klavier + Orchestre: SPEZIAL"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.