Extracción de los caracteres antes de un delimitador

Forums

Hola a tod@s,

Acabo de llegar al mundo "Python" y echo de menos algunas funciones que existen en otros lenguajes de programación que permiten extraer subcadenas de otra (por ejemplo extraer los caracteres que haya antes de un cierto delimitador). He leído por ahí que podría usar librerías de expresiones regulares, pero... me preguntaba si no hay opciones más sencillas para un novato :)

Abrazos

Pedro

Hola Pedro,

efectivamente no hay una función que realice eso explícitamente, pero puedes simularla muy fácilmente obteniendo la posición del delimitador con el método .index(). Por ejemplo, imaginemos que tenemos el siguiente texto:

s = "16/enero/2020"

Podemos extraer la posición de la primera barra inclinada con:

s.index("/")

(devolverá el valor 2), de forma que podríamos extraer el texto anterior a dicha barra inclinada con:

s[:s.index("/")]

El resultado será "16":

Extracción de los caracteres antes de un delimitador

Siguiendo con esta misma línea, podríamos extraer también el texto entre los dos delimitadores (las dos barras inclinadas), aunque de una forma un poco más complicada. En este caso necesitaríamos pasar como rango a extraer las posiciones de ambas barras. La primera ya hemos visto cómo obtenerla. La segunda es un poco más problemática pues el método .index() devuelve el primer índice en el que aparezca el texto indicado. Ahora bien, este método acepta un segundo parámetro que indica a partir de qué posición buscar, así que podemos pasar la posición del primer delimitador + 1. Es decir:

s.index("/")

...devuelve 2, pero:

s.index("/", s.index("/") + 1)

...devuelve 8 (estamos buscando la primera posición del carácter "/" a partir de la posición 2 + 1). Por lo tanto:

s[s.index("/") + 1:s.index("/", s.index("/") + 1)]

...devuelve "enero"

Extracción de los caracteres entre dos delimitadores

Un saludo

Daniel

Enviado por Pedro Castelo el Mié, 15/01/2020 - 14:19