# String Cadena de caracteres, cadena de texto. Strings: ordenados, inmutables, representan texto Ejemplos: - [Creación](https://gitea.kickto.net/devfzn/Apuntes_Python/src/branch/master/02_conceptos/05_strings#creaci%C3%B3n) - [Inmutabilidad](https://gitea.kickto.net/devfzn/Apuntes_Python/src/branch/master/02_conceptos/05_strings#inmutables) - [join()](https://gitea.kickto.net/devfzn/Apuntes_Python/src/branch/master/02_conceptos/05_strings#join) - [Indice](https://gitea.kickto.net/devfzn/Apuntes_Python/src/branch/master/02_conceptos/05_strings#indice) - [Iterar string](https://gitea.kickto.net/devfzn/Apuntes_Python/src/branch/master/02_conceptos/05_strings#iterar-string) - [Funciones](https://gitea.kickto.net/devfzn/Apuntes_Python/src/branch/master/02_conceptos/05_strings#funciones) - [Slicing](https://gitea.kickto.net/devfzn/Apuntes_Python/src/branch/master/02_conceptos/05_strings#slicing) - [Formateo de strings](https://gitea.kickto.net/devfzn/Apuntes_Python/src/branch/master/02_conceptos/05_strings#formateo-de-strings) ## Creación ```python 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 ```python # 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() ```python # 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 ```python # acceder a substrings por índice mi_char = mi_string[0] # W # índice negativo (-1) mi_char = mi_string[-1] #d ``` ### Iterar string ```python # itrerar string for l in frase: pass # verificar si una letra es parte del string if 'e' in frase: pass ``` ### Funciones ```python 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 ```python 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 ```python 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 ```