Extraer subcadena de una cadena en Python
- Extraer subcadena mediante la división de cadenas en Python
-
Extraer subcadena usando el constructor
slice()
en Python - Extraer subcadenas usando expresiones regulares en Python
La cadena es una secuencia de caracteres. Trabajamos con cadenas todo el tiempo, sin importar si estamos haciendo desarrollo de software o programación competitiva. A veces, mientras escribimos programas, tenemos que acceder a subpartes de una cadena. Estas subpartes se conocen más comúnmente como subcadenas. Una subcadena es un subconjunto de una cadena.
En Python, podemos hacer esta tarea fácilmente usando la división de cadenas o usando expresiones regulares o regex.
Extraer subcadena mediante la división de cadenas en Python
Hay algunas formas de cortar cadenas en Python. La indexación es el método más básico y más utilizado. Consulte el siguiente código.
myString = "Mississippi"
print(myString[:]) # Line 1
print(myString[4:]) # Line 2
print(myString[:8]) # Line 3
print(myString[2:7]) # Line 4
print(myString[4:-1]) # Line 5
print(myString[-6:-1]) # Line 6
Producción :
Mississippi
issippi
Mississi
ssiss
issipp
ssipp
En el código anterior, agregamos corchetes []
al final de la variable que almacena la cadena. Usamos esta notación para indexar. Dentro de estos corchetes, agregamos algunos valores enteros que representan índices.
Este es el formato para los corchetes [start : stop : step]
(separados por dos puntos (:
)).
Por defecto, el valor de start
es 0
o el primer índice, el valor de stop
es el último índice y el valor de step
es 1
. start
representa el índice inicial de la subcadena, stop
representa el índice final de la subcadena y step
representa el valor a utilizar para incrementar después de cada índice.
La subcadena devuelta está en realidad entre el índice start
y el índice stop - 1
porque la indexación comienza desde 0
en Python. Entonces, si deseamos recuperar Miss
de Mississippi
, debemos usar [0 : 4]
Los corchetes no pueden estar vacíos. Si desea utilizar los valores predeterminados, la cantidad requerida de dos puntos :
debe agregarse con espacios en el medio para indicar a qué parámetro se refiere. Consulte la siguiente lista para una mejor comprensión.
[:]
-> Devuelve la cadena completa.[4 : ]
-> Devuelve una subcadena desde el índice4
hasta el último índice.[ : 8]
-> Devuelve una subcadena comenzando desde el índice0
hasta el índice7
.[2 : 7]
-> Devuelve una subcadena comenzando desde el índice2
hasta el índice6
.[4 : -1]
-> Devuelve una subcadena comenzando desde el índice4
hasta el penúltimo índice.-1
se puede utilizar para definir el último índice en Python.[-6 : -1]
-> Devuelve una subcadena comenzando desde el sexto índice desde el final hasta el penúltimo índice.
Extraer subcadena usando el constructor slice()
en Python
En lugar de mencionar los índices dentro de los corchetes, podemos usar el constructor slice()
para crear un objeto slice
para cortar una cadena o cualquier otra secuencia como una lista o tupla.
El constructor slice(start, stop, step)
acepta tres parámetros, a saber, start
, stop
y step
. Significan exactamente lo mismo que se explicó anteriormente.
El funcionamiento de slice
es un poco diferente en comparación con la notación de corchetes. El objeto de corte se coloca dentro de los corchetes de variable de cadena como este myString[<'slice' object>]
.
Si un único valor entero, digamos x
, se proporciona al constructor slice()
y se usa más para la división de índices, se recuperará una subcadena que comienza desde el índice 0
hasta el índice x - 1
. Consulte el siguiente código.
myString = "Mississippi"
slice1 = slice(3)
slice2 = slice(4)
slice3 = slice(0, 8)
slice4 = slice(2, 7)
slice5 = slice(4, -1)
slice6 = slice(-6, -1)
print(myString[slice1])
print(myString[slice2])
print(myString[slice3])
print(myString[slice4])
print(myString[slice5])
print(myString[slice6])
Producción :
Mis
Miss
Mississi
ssiss
issipp
ssipp
Los resultados recibidos se explican por sí mismos. Los índices siguen las mismas reglas definidas para la notación de corchetes.
Extraer subcadenas usando expresiones regulares en Python
Para la expresión regular, usaremos el paquete incorporado de Python re
.
import re
string = "123AAAMississippiZZZ123"
try:
found = re.search("AAA(.+?)ZZZ", string).group(1)
print(found)
except AttributeError:
pass
Producción :
Mississippi
En el código anterior, la función search()
busca la primera ubicación del patrón proporcionado como argumento en la cadena pasada. Devuelve un objeto Match
. Un objeto Match
tiene muchos atributos que definen la salida, como el span
de la subcadena o los índices inicial y final de la subcadena.
print(dir(re.search('AAA(.+?)ZZZ', string)))
generará todos los atributos del objeto Match
. Tenga en cuenta que algunos atributos pueden faltar porque cuando se usa dir()
, se llama al método __dir__()
, y este método devuelve una lista de todos los atributos. Y este método es editable o reemplazable.