168 lines
4.5 KiB
Markdown
168 lines
4.5 KiB
Markdown
# 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
|
|
```
|