Strings - Learn Python 3 - Snakify

Lesson 5
Instrumentos de cuerda


1. Instrumentos de cuerda

Se puede leer una cadena de la entrada estándar usando la input() función input() o definida en comillas simples o dobles. Dos cadenas se pueden concatenar, y también podemos repetir una cadena n veces multiplicándola por un entero:

print('>_< ' * 5)  # &gt; _ &lt;&gt; _ &lt;&gt; _ &lt;&gt; _ &lt;&gt; _ &lt;

Una cadena en Python es una secuencia de caracteres. La función len(some_string) devuelve la cantidad de caracteres que hay en una cadena:

print(len('abcdefghijklmnopqrstuvwxyz'))  # 26

Cada objeto en Python se puede convertir en cadena usando la función str(some_object) . Así que podemos convertir números en cadenas:

s = str(2 ** 100)
print(s)  # 1267650600228229401496703205376
print(len(s))  # 31
Advertising by Google, may be based on your interests

2. Rebanadas: carácter individual

Una porción da de la cadena dada un carácter o algún fragmento: subcadena o subsecuencia.

Hay tres formas de rebanadas. La forma más simple de la porción: una porción de un solo carácter S[i] da el carácter i de la cadena. Contamos caracteres comenzando desde 0. Es decir, si S = 'Hello' , S[0] == 'H' , S[1] == 'e' , S[2] == 'l' , S[3] == 'l' , S[4] == 'o' . Tenga en cuenta que en Python no hay un tipo separado para los caracteres de la cadena. S[i] también tiene el tipo str , al igual que la cadena fuente.

El número i en S[i] se llama índice .

Si especifica un índice negativo, se cuenta desde el final, comenzando con el número -1 . Es decir, S[-1] == 'o' , S[-2] == 'l' , S[-3] == 'l' , S[-4] == 'e' , S[-5] == 'H' .

Vamos a resumirlo en la tabla:

Cadena S H mi l l o
Índice S [0] S [1] S [2] S [3] S [4]
Índice S [-5] S [-4] S [-3] S [-2] S [-1]

Si el índice en el segmento S[i] es mayor o igual que len(S) , o menor que -len(S) , se produce el siguiente error IndexError: string index out of range .

Advertising by Google, may be based on your interests

3. Rebanadas: subcadena

Rebanada con dos parámetros S[a:b] devuelve la subcadena de longitud b - a , comenzando con el carácter en el índice a y durando hasta el carácter en el índice b , sin incluir el último. Por ejemplo, S[1:4] == 'ell' , y puede obtener la misma subcadena usando S[-4:-1] . Puede mezclar índices positivos y negativos en el mismo corte, por ejemplo, S[1:-1] es una subcadena sin el primer y el último carácter de la cadena (el corte comienza con el carácter con índice 1 y termina con un índice de -1, sin incluirlo).

Las rebanadas con dos parámetros nunca causan IndexError . Por ejemplo, para S == 'Hello' la porción S[1:5] devuelve la cadena 'ello' , y el resultado es el mismo incluso si el segundo índice es muy grande, como S[1:100] .

Si omite el segundo parámetro (pero conserva los dos puntos), el corte va al final de la cadena. Por ejemplo, para eliminar el primer carácter de la cadena (su índice es 0), tome la porción S[1:] . De manera similar, si omite el primer parámetro, Python toma el corte desde el principio de la cadena. Es decir, para eliminar el último carácter de la cadena, puede usar la división S[:-1] . La porción S[:] coincide con la cadena S misma.

Advertising by Google, may be based on your interests

4. Rebanadas: inmutabilidad de las cadenas

Cualquier porción de una cadena crea una nueva cadena y nunca modifica la original. En Python, las cadenas son inmutables, es decir, no se pueden cambiar como objetos. Solo puede asignar la variable a la nueva cadena, pero la anterior permanece en la memoria.

De hecho, en Python no hay variables. Solo están los nombres que están asociados con cualquier objeto. Primero puede asociar un nombre con un objeto, y luego - con otro. ¿Pueden varios nombres asociarse con uno y el mismo objeto?

Demostremos eso:

s = 'Hello'
t = s  # s y t apuntan a la misma cadena
t = s[2:4]  # ahora t apunta a la nueva cadena &#39;ll&#39;
print(s)  # imprime &#39;Hola&#39; como s no se cambia
print(t)  # imprime &#39;ll&#39;
Advertising by Google, may be based on your interests

5. Rebanadas: subsecuencia

Si especifica un sector con tres parámetros S[a:b:d] , el tercer parámetro especifica el paso, lo mismo que para el range() funciones range() . En este caso, solo se toman los caracteres con el siguiente índice: a a + d , a + 2 * d y así sucesivamente, hasta que no se incluya el carácter con el índice b . Si el tercer parámetro es igual a 2, el corte toma cada segundo carácter, y si el paso del corte es igual a -1 , los caracteres van en orden inverso. Por ejemplo, puede invertir una cadena como esta: S[::-1] . Veamos los ejemplos:

s = 'abcdefg'
print(s[1])
print(s[-1])
print(s[1:3])
print(s[1:-1])
print(s[:3])
print(s[2:])
print(s[:-1])
print(s[::2])
print(s[1::2])
print(s[::-1])
Observe cómo el tercer parámetro del segmento es similar al tercer parámetro del range() funciones range() :
s = 'abcdefghijklm'
print(s[0:10:2])
for i in range(0, 10, 2):
    print(i, s[i])
Advertising by Google, may be based on your interests

6. Métodos de cadena: find () y rfind ()

Un método es una función que está vinculada al objeto. Cuando se llama al método, el método se aplica al objeto y realiza algunos cálculos relacionados con él. Los métodos se invocan como object_name.method_name(arguments) . Por ejemplo, en s.find("e") el método de cadena find() se aplica a la cadena s con un argumento "e" .

El método find() busca una subcadena, pasada como un argumento, dentro de la cadena a la que se llama. La función devuelve el índice de la primera aparición de la subcadena. Si no se encuentra la subcadena, el método devuelve -1.

s = 'Hello'
print(s.find('e'))
# 1
print(s.find('ll'))
# 2
print(s.find('L'))
# -1

De forma similar, el método rfind() devuelve el índice de la última aparición de la subcadena.

s = 'abracadabra'
print(s.find('b'))
# 1
print(s.rfind('b'))
# 8

Si llama a find() con tres argumentos en la s.find(substring, left, right) , la búsqueda se realiza dentro de la división s[left:right] . Si especifica solo dos argumentos, como s.find(substring, left) , la búsqueda se realiza en el sector s[left:] , es decir, comenzando con el carácter en el índice hacia la left hasta el final de la cadena. Method s.find(substring, left, right) devuelve el índice absoluto, relativo a toda la cadena s , y no al sector.

s = 'my name is bond, james bond, okay?'
print(s.find('bond'))
# 11
print(s.find('bond', 12))
# 23
Advertising by Google, may be based on your interests

7. Métodos de cadena: replace ()

El método replace() reemplaza todas las ocurrencias de una subcadena dada por otra. Sintaxis: en el s.replace(old, new) toma la cadena S y reemplaza todas las apariciones de subcadena old con la subcadena new . Ejemplo:

print('a bar is a bar, essentially'.replace('bar', 'pub'))
# &#39;un pub es un pub, esencialmente&#39;

Uno puede pasar el tercer count argumentos, así: en el s.replace(old, new, count) . Hace que replace() reemplace solo las primeras ocurrencias de count y luego se detenga.

print('a bar is a bar, essentially'.replace('bar', 'pub', 1))
# &#39;un pub es un bar, esencialmente&#39;
Advertising by Google, may be based on your interests

8. Métodos de cadena: count ()

Este método cuenta el número de ocurrencias de una cadena dentro de otra cadena. La forma más simple es esta: en la s.count(substring) . Solo se tienen en cuenta las ocurrencias no superpuestas:

print('Abracadabra'.count('a'))
# 4
print(('aaaaaaaaaa').count('aa'))
# 5

Si especifica tres parámetros en la s.count(substring, left, right) , el recuento se realiza dentro de la división s[left:right] .

Advertising by Google, may be based on your interests