Dividir una cadena con múltiples delimitadores en Python
He encontrado algunas respuestas en Internet, pero no tengo experiencia con expresiones regulares, que creo que es lo que se necesita aquí.
Tengo una cadena que necesita ser dividida por un ';' o ', ' Es decir, tiene que ser un punto y coma o una coma seguida de un espacio. Las comas individuales sin espacios finales deben dejarse sin tocar
Ejemplo de cadena:
"b-staged divinylsiloxane-bis-benzocyclobutene [124221-30-3], mesitylene [000108-67-8]; polymerized 1,2-dihydro-2,2,4- trimethyl quinoline [026780-96-1]"
debe dividirse en una lista que contenga lo siguiente
('b-staged divinylsiloxane-bis-benzocyclobutene [124221-30-3]' , 'mesitylene [000108-67-8]', 'polymerized 1,2-dihydro-2,2,4- trimethyl quinoline [026780-96-1]')
427
5
Por suerte, Python lo tiene incorporado :)
Actualización:
Siguiendo tu comentario:
Haz un
str.replace('; ', ', ')
y luego unstr.split(', ')
.Aquí's una forma segura para cualquier iterable de delimitadores, usando expresiones regulares:
permite construir el patrón automáticamente y hacer que los delimitadores se escapen bien.
Aquí's esta solución como una función para su placer de copiar-pegar:
Si usted'va a dividir a menudo usando los mismos delimitadores, compile su expresión regular de antemano como se describe y use [
RegexObject.split
][split].[escape]: http://docs.python.org/2/library/re.html#re.escape [split]: http://docs.python.org/2/library/re.html#re.RegexObject.split
En respuesta a la respuesta de Jonathan arriba, esto sólo parece funcionar para ciertos delimitadores. Por ejemplo:
Poniendo los delimitadores entre corchetes parece funcionar más eficazmente.
Así es como se ve la regex: