Dividir una cadena por un delimitador en python

195

Cómo dividir esta cadena donde __está el delimitador

MATCHES__STRING

Para obtener una salida de ['MATCHES', 'STRING']?

Casco
fuente
8
Vale la pena leer los documentos estándar de Python y tratar de comprender algunos programas que otros han hecho para comenzar a comprender los conceptos básicos de Python. Practicar y copiar / modificar son excelentes herramientas para aprender el idioma.
Tony Veijalainen

Respuestas:

327

Puedes usar la str.splitfunción:string.split('__')

>>> "MATCHES__STRING".split("__")
['MATCHES', 'STRING']
adamk
fuente
1
Me preguntaba, ¿cuál es la diferencia entre el primer ejemplo (simplemente usando split ()) y el segundo ejemplo (con un bucle for)?
EndenDragon
44
@EndenDragon El bucle for se aplicará automáticamente x.strip()y devolverá una lista de coincidencias sin espacios en blanco a ambos lados. El diablo está en los detalles.
Sébastien Vercammen
Oye, como esta es una pregunta muy popular, la edité para hacer solo una pregunta específica y eliminé la parte con los espacios alrededor del delimitador porque no estaba claro qué esperaba el OP (dado que nunca hubo una pregunta en la pregunta). Creo que la pregunta (y las respuestas) son más útiles de esta manera, pero no dude en revertir todas las ediciones si no está de acuerdo.
Aran-Fey
4

Puede interesarle el csvmódulo, que está diseñado para archivos separados por comas, pero que puede modificarse fácilmente para usar un delimitador personalizado.

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

for row in csv.reader( lines ):
    ...
Katriel
fuente
1

Cuando tiene dos o más elementos (en el ejemplo a continuación hay tres) elementos en la cadena, puede usar una coma para separar estos elementos:

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

Después de esta línea de código, las tres variables tendrán valores de tres partes de la variable ev

Entonces, si la variable ev contiene esta cadena y aplicamos el separador '@':

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

Luego, después de la operación dividida, la variable

  • la fecha tendrá el valor "Sa., 23. März"
  • el tiempo tendrá valor "19:00"
  • event_name tendrá el valor "Klavier + Orchester: SPEZIAL"
Sergey Nasonov
fuente