Dominando cadenas en Python: Creación, acceso y manipulación
Las cadenas están entre los tipos más populares en Python. Se crean simplemente encerrando caracteres entre comillas. Python trata comillas simples igual que dobles. Crear cadenas es tan simple como asignar un valor a una variable. Por ejemplo:
var1 = '¡Hola Mundo!' var2 = "Programación Python"
Acceso a valores en cadenas
Python no soporta tipo carácter; se tratan como cadenas de longitud uno, también consideradas subcadenas.
Para acceder a subcadenas, usa corchetes para rebanado con índice o índices. Por ejemplo:
Demo en vivo#!/usr/bin/python var1 = '¡Hola Mundo!' var2 = "Programación Python" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5]
Resultado:
var1[0]: H var2[1:5]: ytho
Actualización de cadenas
Puedes "actualizar" una cadena existente reasignando una variable a otra cadena. El nuevo valor puede relacionarse con el anterior o ser completamente diferente. Por ejemplo:
Demo en vivo#!/usr/bin/python var1 = '¡Hola Mundo!' print "Cadena actualizada: ", var1[:6] + 'Python'
Resultado:
Cadena actualizada: ¡Hola Python
Caracteres de escape
Lista de caracteres de escape o no imprimibles con notación de barra invertida:
| Notación barra invertida | Carácter hexadecimal | Descripción |
|---|---|---|
| \a | 0x07 | Campana o alerta |
| \b | 0x08 | Retroceso |
| \cx | Control-x | |
| \C-x | Control-x | |
| \e | 0x1b | Escape |
| \f | 0x0c | Avance de página |
| \M-\C-x | Meta-Control-x | |
| \n | 0x0a | Nueva línea |
| \nnn | Notación octal, n en rango 0-7 | |
| \r | 0x0d | Retorno de carro |
| \s | 0x20 | Espacio |
| \t | 0x09 | Tabulador |
| \v | 0x0b | Tabulador vertical |
| \x | Carácter x | |
| \xnn | Notación hexadecimal, n en 0-9, a-f, A-F |
Operadores especiales de cadena
Asumiendo variable a = 'Hola' y b = 'Python':
| Operador | Descripción | Ejemplo |
|---|---|---|
| + | Concatenación - Une valores a ambos lados. | a + b = HolaPython |
| * | Repetición - Crea nuevas cadenas concatenando copias. | a*2 = HolaHola |
| [] | Rebanado - Carácter en índice dado. | a[1] = o |
| [:] | Rango de rebanado - Caracteres en rango dado. | a[1:4] = ola |
| in | Pertenencia - Verdadero si carácter existe en cadena. | H in a = 1 |
| not in | Pertenencia - Verdadero si carácter NO existe. | M not in a = 1 |
| r/R | Cadena raw - Suprime significado real de escapes. Sintaxis: r"cadena" o R"cadena". | print r'\n' imprime \n |
| % | Formato - Formateo de cadenas. | Ver siguiente sección |
Operador de formateo de cadenas
Una de las características más geniales de Python es el operador de formato %. Es único para cadenas y compensa la falta de funciones como printf() de C. Ejemplo simple:
Demo en vivo#!/usr/bin/python
print "Mi nombre es %s y peso %d kg!" % ('Zara', 21)
Resultado:
Mi nombre es Zara y peso 21 kg!
Lista completa de símbolos para usar con %:
| Símbolo de formato | Conversión |
|---|---|
| %c | carácter |
| %s | conversión de cadena via str() |
| %i | entero decimal con signo |
| %d | entero decimal con signo |
| %u | entero decimal sin signo |
| %o | entero octal |
| %x | entero hexadecimal (minúsculas) |
| %X | entero hexadecimal (MAYÚSCULAS) |
| %e | notación exponencial (minúscula 'e') |
| %E | notación exponencial (MAYÚSCULA 'E') |
| %f | número real de punto flotante |
| %g | el más corto de %f y %e |
| %G | el más corto de %f y %E |
Otros símbolos y funcionalidades soportadas:
| Símbolo | Funcionalidad |
|---|---|
| * | argumento especifica ancho o precisión |
| - | justificación izquierda |
| + | mostrar signo |
| <sp> | espacio en blanco antes de número positivo |
| # | añade cero inicial octal o 0x/0X hexadecimal |
| 0 | rellenar izquierda con ceros (en vez de espacios) |
| % | '%%' deja un '%' literal |
| (var) | variable de mapeo (argumentos diccionario) |
| m.n | m ancho mínimo total, n dígitos después del punto decimal |
Comillas triples
Las comillas triples de Python permiten cadenas que abarcan múltiples líneas, incluyendo NEWLINEs, TABs y caracteres especiales verbatim.
La sintaxis son tres comillas simples o dobles consecutivas.
Demo en vivo#!/usr/bin/python cadena_larga = """esta es una cadena larga compuesta por varias líneas y caracteres no imprimibles como TAB ( \t ) se mostrarán tal cual. NEWLINEs explícitos como [ \n ] o solo NEWLINE en la asignación también se muestran.""" print cadena_larga
Resultado (cada carácter especial convertido a su forma impresa):
esta es una cadena larga compuesta por varias líneas y caracteres no imprimibles como TAB ( ) se mostrarán tal cual. NEWLINEs explícitos como [ ] o solo NEWLINE en la asignación también se muestran.
Las cadenas raw no tratan la barra invertida como especial. Cada carácter se queda tal como lo escribiste:
Demo en vivo#!/usr/bin/python print 'C:\\nada'
Resultado:
C:\nada
Usando cadena raw con r'expresión':
Demo en vivo#!/usr/bin/python print r'C:\\nada'
Resultado:
C:\\nada
Cadenas Unicode
Las cadenas normales en Python se almacenan internamente como ASCII de 8 bits, mientras que las Unicode se almacenan como Unicode de 16 bits. Esto permite un conjunto más variado de caracteres, incluyendo caracteres especiales de la mayoría de idiomas.
Demo en vivo#!/usr/bin/python print u'¡Hola, mundo!'
Resultado:
¡Hola, mundo!
Las cadenas Unicode usan prefijo u, igual que raw usan prefijo r.
Métodos integrados de cadena
Python incluye los siguientes métodos integrados para manipular cadenas:
| Nº | Métodos con descripción |
|---|---|
| 1 | capitalize() - Primera letra en mayúscula. |
| 2 | center(width, fillchar) - Cadena centrada con relleno de espacios. |
| 3 | count(str, beg=0, end=len(string)) - Cuenta ocurrencias de str. |
| 4 | decode(encoding='UTF-8', errors='strict') - Decodifica usando codec. |
| 5 | encode(encoding='UTF-8', errors='strict') - Codifica cadena. |
| 6 | endswith(suffix, beg=0, end=len(string)) - Verifica sufijo. |
| 7 | expandtabs(tabsize=8) - Expande tabs a espacios. |
| 8 | find(str, beg=0, end=len(string)) - Busca str, devuelve índice o -1. |
| 9 | index(str, beg=0, end=len(string)) - Como find(), pero lanza excepción si no encuentra. |
| 10 | isalnum() - Verdadero si al menos 1 carácter y todos alfanuméricos. |
| 11 | isalpha() - Verdadero si al menos 1 carácter y todos alfabéticos. |
| 12 | isdigit() - Verdadero si solo dígitos. |
| 13 | islower() - Verdadero si al menos 1 carácter con caja y todos minúsculas. |
| 14 | isnumeric() - Verdadero si unicode solo numérico. |
| 15 | isspace() - Verdadero si solo espacios en blanco. |
| 16 | istitle() - Verdadero si "titlecased" correctamente. |
| 17 | isupper() - Verdadero si al menos 1 carácter con caja y todos mayúsculas. |
| 18 | join(seq) - Une representaciones de elementos en seq con separador. |
| 19 | len(string) - Longitud de la cadena. |
| 20 | ljust(width[, fillchar]) - Cadena justificada izquierda con relleno. |
| 21 | lower() - Convierte mayúsculas a minúsculas. |
| 22 | lstrip() - Elimina espacios iniciales. |
| 23 | maketrans() - Tabla de traducción para translate(). |
| 24 | max(str) - Carácter alfabético máximo. |
| 25 | min(str) - Carácter alfabético mínimo. |
| 26 | replace(old, new[, max]) - Reemplaza old por new. |
| 27 | rfind(str, beg=0, end=len(string)) - Busca hacia atrás. |
| 28 | rindex(str, beg=0, end=len(string)) - Como index() pero hacia atrás. |
| 29 | rjust(width[, fillchar]) - Justificada derecha con relleno. |
| 30 | rstrip() - Elimina espacios finales. |
| 31 | split(str="", num=string.count(str)) - Divide por delimitador. |
| 32 | splitlines(num=string.count('\n')) - Divide en líneas. |
| 33 | startswith(str, beg=0, end=len(string)) - Verifica prefijo. |
| 34 | strip([chars]) - lstrip() y rstrip() combinados. |
| 35 | swapcase() - Invierte mayúsculas/minúsculas. |
| 36 | title() - Versión "titlecased": palabras inician mayúscula. |
| 37 | translate(table, deletechars="") - Traduce según tabla. |
| 38 | upper() - Convierte minúsculas a mayúsculas. |
| 39 | zfill(width) - Rellena izquierda con ceros. |
| 40 | isdecimal() - Verdadero si unicode solo decimales. |
python
- Dominando strings en C#: Fundamentos, operaciones y técnicas avanzadas
- Dominando operadores en Python: Guía completa
- Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
- Domine las Operaciones de Strings en Python: Replace, Join, Split, Reverse y Conversión de Mayúsculas/Minúsculas
- Domine el Método strip() de Python: Guía Completa y Ejemplos Prácticos
- Domine str.count() en Python: Cómo Contar Caracteres y Subcadenas con Ejemplos
- Domine el Formateo de Strings en Python con format(): Ejemplos Claros
- Python len(): Guía Práctica para Medir Longitud de Objetos
- Domine el Método String.find() en Python: Sintaxis, Ejemplos y Alternativas
- Dominando enumerate() en Python: bucles con índices para listas, tuplas, cadenas y diccionarios
- Dominar Strings en Java: Creación, Métodos y Mejores Prácticas