Apuntes_Python/02_conceptos/05_strings/strings.py

133 lines
3.3 KiB
Python
Raw Normal View History

2022-12-24 22:41:20 -03:00
"""
Strings: ordenados, inmutables, representan texto
"""
# 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"""
# acceder a substrings por índice
mi_char = mi_string[0] # W
# índice negativo (-1)
mi_char = mi_string[-1] #d
# 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
# 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
# itrerar string
for l in frase:
pass
# verificar si una letra es parte del string
if 'e' in frase:
pass
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']
# 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
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