Apuntes_Python/02_conceptos/05_strings/README.md

4.5 KiB

String

Cadena de caracteres, cadena de texto. Strings: ordenados, inmutables, representan texto

Ejemplos:

Creación

mi_string = "Hello World"
mi_string = 'Hello World'
mi_string = "Tengo una ' dentro"
mi_string = 'Tengo una \' dentro'
mi_string = """Hello
World"""

# sin salto de linea
mi_string = """Hello \
World"""

Inmutables

# los string son inmutables
try:
    mi_string[0] = 'h'
    msg = mi_string[0]
except TypeError as TE:
    msg = TE
finally:
    print(msg)
# 'str' object does not support item assignment

join()

# crear string con join()
nuevo_str = ' '.join(mi_lista)

from timeit import default_timer as timer
mi_lista = ['a'] * 100000000

start = timer()
mi_string = ''
# forma incorrecta, evitar
for i in mi_lista:
    mi_string += i

total = timer() - start
total = round(total, 3)
print('la forma incorrecta demoró:\n\t', total, 'segundos')
# 10.632 segundos

start = timer()
mi_string = ''
# forma correcta
mi_string = ''.join(mi_lista)

total = timer() - start
total = round(total, 3)
print('join() demoró:\n\t', total, 'segundos')
# 0.568 segundos

Operaciones sobre strings

Indice

# acceder a substrings por índice
mi_char = mi_string[0]      # W

# índice negativo (-1)
mi_char = mi_string[-1]     #d

Iterar string

# itrerar string
for l in frase:
    pass

# verificar si una letra es parte del string
if 'e' in frase:
    pass

Funciones

mi_string = '       Hola Mundo      '
# remover espacios con strip()
mi_string = mi_string.strip()   # 'Hola Mundo'
# strip() no modifica al string, para guardar se debe asignar

# upper()
mi_string = mi_string.upper()   # HOLA MUNDO

# lower()
mi_string = mi_string.lower()   # hola mundo

# startswith(): retorna True si el string 
# comienza con el string pasado como argumento
mi_string.startswith('h')       # True

# endswith(): retorna True si el string 
# termina con el string pasado como argumento
mi_string.endswith('ndo')       # True

# find(): retorna el índice de la primera coincidencia
# el sub-string pasado como argumento, si no lo encuentra
# retorna -1
mi_string.find('o')     # 1

# count(): retorna la cuenta de existencias del sub-string
# pasado como argumento
mi_string.count('ol')

# replace(): reemplaza un sub-string con el sub-string 
# pasado como argumento, retona un nuevo string, no reemplaza
# al orignal
mi_string.replace('mundo', 'Universo')  # 'hola Universo'
# si no encientra el sub-string solo devuelve el original

# split(): divide el string según el sub-string pasasdo 
# como argumento, ' ' por defecto
# devuelve una lista
mi_lista = mi_string.split()    # ['hola', 'Universo']

Slicing

sub_string = mi_string[1:5]     # ello
# step
sub_string = mi_string[::2]     # HloWrd
# step negativo
sub_string = mi_string[::-1]     # dlroW olleH

nombre, saludo= 'Roberte', 'Hola'
# concatenación +
frase = saludo + ' ' + nombre       # Hola Roberte

Formateo de strings

var1, var2, var3, var4 = 'Antuco', 5, 3.123456, True

# formateo de string f"% " %
mi_string = "las variables son %s, %d, %d, %.2f, %r" % (var1, var2, var3, var3, var4)
# las variables son Antuco, 5, 3, 3.12, True

# formateo de string format()
mi_string = "las variables son {}, {}, {:.2f}, {}, {}".format(var1, var2, var3, var3, var4)
# las variables son Antuco, 5, 3.123456, 3.12, True

# metodo recomendado

# formateo de string f" {var}"
mi_string = f"las variables son {var1}, {var2*5}, {round(var3, 2)}, {var3}, {var4}"
# permite operar sobre las variables ej. var2 y var3
# las variables son Antuco, 25, 3.123456, 3.12, True