Saltar al contenido

Fundamentos de la pitón: Cuerdas

Las cuerdas en Python son inmutables, una vez creadas no son modificables. A las variables se les puede asignar otra cadena, pero eso no modifica la cadena original. Considere este código:

123456789101112; a =$0027Chip$0027s; b = a
pitón

Arriba asigno el valor $0027Chip$0027 a la variable a y luego asigno esa misma cadena a la variable b. Tanto a como b apuntan realmente a la misma cadena interna que contiene $0027Chip$0027. Usando el operador de comparación is confirma esto: is devuelve True cuando ambas variables apuntan al mismo objeto en la memoria.

Fundamentos de la pitón: Cuerdas
Fundamentos de la pitón: Cuerdas

Pero cuando intentamos modificar la cadena asignada a a, en realidad creamos una nueva cadena. Aunque a parece comenzar con la misma secuencia, son totalmente diferentes entre sí. La cadena original permanece y b apunta a ella.

Una diferencia obvia entre a y b en este punto es que tienen diferentes longitudes. La longitud de una cuerda puede obtenerse utilizando el método len():

1234567
pitón

La longitud de una cadena es el número de caracteres Unicode (puntos de código más estrictamente) que contiene. En el ejemplo anterior vemos que la palabra "Marklar" tiene siete caracteres, un tabulador es un carácter, y que una cadena vacía tiene una longitud de cero.

Una cuerda no puede ser modificada, pero si necesitas una parte de una cuerda puedes cortarla y usar una porción de ella:

1234; iniciales =$0027Chip$0027[0]+$0027Marklar$0027[0]; print(initials)CM;

pitón

Usando corchetes, puedes indexar en - apuntar a - los caracteres de una cadena por su desviación del comienzo de la cadena. Cero es el primer carácter, así que en el ejemplo anterior creé las iniciales rompiendo el primer carácter de dos partes de un nombre.

12345; palabra =$0027HELLO!$0027*; apropiado = palabra[0]+ palabra[1:5].lower()*; print(proper)*Hola
pitón

Para obtener un solo carácter de una cadena, especifique un solo subíndice entre corchetes. "HELLO"[0] es "H", "HELLO"[1] es "E", y así sucesivamente. El trozo de una cadena $0027HELLO!$0027[0] es en realidad una cadena de un solo carácter, no un carácter de tipo de datos.

Si quieres unos pocos caracteres, proporcionas el desplazamiento inicial y final en la cadena. En el ejemplo anterior, la variable propiamente dicha se hace "propiamente cubierta" cortando del segundo al quinto carácter utilizando los subíndices uno como punto de partida y cinco como último carácter, inclusive. Las compensaciones se basan en cero, por lo que el subíndice de E es 1 . Cuando se quiere una subcadena desde una cierta posición hasta el final de la cadena, se puede omitir el segundo subíndice. Las dos expresiones siguientes son equivalentes:

12345;<;print($0027Chip Marklar$0027[5:12])Marklar
pitón

También se puede especificar un desplazamiento del final de una cadena, utilizando un entero negativo:

123;|;print($0027Marklar!$0027[0:-1])Marklar
pitón

El ejemplo anterior extrae de la cadena la secuencia de los primeros a través de los últimos caracteres. Me gusta leer el subíndice negativo como "excepto los últimos n caracteres". Como en el segundo subíndice, si quiere todos los caracteres del principio de una cadena puede omitir el primer desplazamiento y escribir:

123;|;print($0027Marklar!$0027[:-1])$0027Marklar$0027

pitón

Como mencioné, el trozo de cuerda devuelto es una cuerda. Pero no modifica la cadena original, ni es la cadena original. Si cortamos la primera parte de una cadena, en realidad estamos obteniendo una nueva cadena, poblada a partir de la rebanada de la original:

1234567891011; a =$0027Chip Marklar$0027s; b = a[0:4]; print(a)Chip Marklar$0027s; print(b); print(a is b)False
pitón

Aunque a y b compartan la misma secuencia de caracteres de inicio, aunque b fue aparentemente creada a partir de los mismos caracteres de inicio de la a original, no son la misma cadena y no apuntan al mismo lugar de memoria. Un trozo de una cadena es una cadena completamente nueva.

Otra tarea común es dividir las frases en palabras. El método split() está hecho sólo para eso:

123456;<;$0027Chip Marklar Sipped Sarsaparilla$0027.split()[$0027Chip$0027,$0027Marklar$0027,$0027Sipped$0027,$0027Sarsaparilla$0027]};
pitón

Sin argumentos, split() romperá una cadena en cualquier carácter de espacio en blanco como tabulación, espacio, salto de línea y alimentación de línea$0027. El resultado de .split() es un objeto de lista que contiene las cadenas individuales que quedan después de romper el texto original.

Si se suministra un carácter a .split() - en nuestro ejemplo la letra mayúscula S - el texto se romperá a lo largo de las ocurrencias de ese carácter en la cadena original. Observe que esta es una operación que distingue entre mayúsculas y minúsculas, por lo que en el ejemplo anterior la última palabra contiene s en minúsculas porque a split se le dio la S en mayúsculas .

De vez en cuando, puede que quieras saber si una cadena contiene otra cadena. Utilice el operador de entrada para comprobar si una cadena está contenida en otra.

12345;$0027i$0027in$0027team$0027Falso;$0027chip$0027in$0027archipiélago$0027Verdadero
pitón

El número de veces que la subcadena indicada existe en la cadena mayor no importa, siempre que aparezca una vez que el operador de entrada devuelva True.