Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

Dominando Cadenas en Python: Creación, Formateo y Manipulación

Cadenas en Python

En este tutorial aprenderás a crear, formatear, modificar y eliminar cadenas en Python. También conocerás diversas operaciones y funciones de cadenas.

Video: Cadenas en Python

¿Qué es una Cadena en Python?

Una cadena es una secuencia de caracteres.

Un carácter es simplemente un símbolo. Por ejemplo, el idioma inglés tiene 26 caracteres.

Las computadoras no tratan con caracteres, tratan con números (binario). Aunque veas caracteres en tu pantalla, internamente se almacenan y manipulan como combinación de 0s y 1s.

Esta conversión de carácter a número se llama codificación, y el proceso inverso es decodificación. ASCII y Unicode son codificaciones populares.

En Python, una cadena es una secuencia de caracteres Unicode. Unicode se introdujo para incluir todos los caracteres de todos los idiomas y aportar uniformidad en la codificación. Puedes aprender sobre Unicode en Python Unicode.


¿Cómo Crear una Cadena en Python?

Las cadenas se crean encerrando caracteres entre comillas simples o dobles. Incluso se pueden usar comillas triples, generalmente para cadenas multilínea y docstrings.

# definiendo cadenas en Python
# todas las siguientes son equivalentes
my_string = 'Hola'
print(my_string)
my_string = "Hola"
print(my_string)
my_string = '''Hola'''
print(my_string)
# comillas triples para múltiples líneas
my_string = """Hola, bienvenido al mundo de Python"""
print(my_string)

Al ejecutar el programa, la salida será:

Hola Hola Hola Hola, bienvenido al mundo de Python

¿Cómo Acceder a Caracteres en una Cadena?

Podemos acceder a caracteres individuales usando indexación y a un rango usando slicing. El índice empieza en 0. Acceder fuera de rango lanza IndexError. El índice debe ser entero; usar floats u otros tipos resulta en TypeError.

Python permite indexación negativa para sus secuencias. El índice -1 se refiere al último elemento, -2 al penúltimo, etc. Podemos acceder a un rango usando el operador de slicing : (dos puntos).

# Accediendo a caracteres de cadena en Python
str = 'programiz'
print('str = ', str)
# primer carácter
print('str[0] = ', str[0])
# último carácter
print('str[-1] = ', str[-1])
# slicing 2do a 5to carácter
print('str[1:5] = ', str[1:5])
# slicing 6to a 2do último
print('str[5:-2] = ', str[5:-2])

Al ejecutar el programa anterior, obtenemos:

str = programiz str[0] = p str[-1] = z str[1:5] = rogr str[5:-2] = am

Si intentamos acceder a un índice fuera de rango o usamos números que no sean enteros, obtendremos errores.

# índice debe estar en rango
>>> my_string[15]
...
IndexError: string index out of range
# índice debe ser entero
>>> my_string[1.5]
...
TypeError: string indices must be integers

El slicing se visualiza mejor considerando el índice entre los elementos como se muestra abajo.

Dominando Cadenas en Python: Creación, Formateo y Manipulación

¿Cómo Cambiar o Eliminar una Cadena?

Las cadenas son inmutables. Esto significa que los elementos de una cadena no pueden cambiarse una vez asignados. Simplemente podemos reasignar diferentes cadenas al mismo nombre.

>>> my_string = 'programiz'
>>> my_string[5] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> my_string = 'Python'
>>> my_string
'Python'

No podemos eliminar o remover caracteres de una cadena. Pero eliminar la cadena completamente es posible usando la palabra clave del.

>>> del my_string[1]
...
TypeError: 'str' object doesn't support item deletion
>>> del my_string
>>> my_string
...
NameError: name 'my_string' is not defined

Operaciones con Cadenas en Python

Hay muchas operaciones que se pueden realizar con cadenas, lo que las convierte en uno de los tipos de datos más usados en Python.

Concatenación de Dos o Más Cadenas

Unir dos o más cadenas en una sola se llama concatenación.

El operador + hace esto en Python. Simplemente escribir dos literales de cadena juntos también los concatena.

El operador * puede usarse para repetir la cadena un número dado de veces.

# Operaciones con cadenas en Python
str1 = 'Hola'
str2 = 'Mundo!'
# usando +
print('str1 + str2 = ', str1 + str2)
# usando *
print('str1 * 3 =', str1 * 3)

Al ejecutar el programa anterior, obtenemos:

str1 + str2 = HolaMundo! str1 * 3 = HolaHolaHola

Escribir dos literales de cadena juntos también los concatena como el operador +.

Si queremos concatenar cadenas en diferentes líneas, podemos usar paréntesis.

>>> # dos literales de cadena juntos
>>> 'Hola ''Mundo!'
'Hola Mundo!'
>>> # usando paréntesis
>>> s = ('Hola '
... 'Mundo')
>>> s
'Hola Mundo'

Iterar sobre una Cadena

Podemos iterar sobre una cadena usando un bucle for. Ejemplo para contar las 'l' en una cadena.

# Iterando sobre una cadena
count = 0
for letter in 'Hola Mundo':
    if(letter == 'l'):
        count += 1
print(count, 'letras encontradas')

Al ejecutar el programa anterior, obtenemos:

3 letras encontradas

Prueba de Pertenencia en Cadenas

Podemos probar si un subcadena existe dentro de una cadena usando la palabra clave in.

>>> 'a' in 'programa'
True
>>> 'at' not in 'batalla'
False

Funciones Integradas para Trabajar con Python

Varias funciones integradas que funcionan con secuencias funcionan con cadenas también.

Algunas de las más usadas son enumerate() y len(). La función enumerate() devuelve un objeto enumerate que contiene el índice y valor de todos los elementos de la cadena como pares. Esto es útil para iteración.

De igual forma, len() devuelve la longitud (número de caracteres) de la cadena.

str = 'frío'
# enumerate()
list_enumerate = list(enumerate(str))
print('list(enumerate(str)) = ', list_enumerate)
# conteo de caracteres
print('len(str) = ', len(str))

Al ejecutar el programa anterior, obtenemos:

list(enumerate(str)) = [(0, 'f'), (1, 'r'), (2, 'í'), (3, 'o')] len(str) = 4

Formateo de Cadenas en Python

Secuencias de Escape

Si queremos imprimir un texto como Él dijo, "¿Qué hay?", no podemos usar ni comillas simples ni dobles. Esto resultaría en SyntaxError ya que el texto contiene ambos tipos de comillas.

>>> print("Él dijo, "¿Qué hay?"")
...
SyntaxError: invalid syntax
>>> print('Él dijo, "¿Qué hay?"')
...
SyntaxError: invalid syntax

Una forma de evitar esto es usar comillas triples. Alternativamente, podemos usar secuencias de escape.

Una secuencia de escape empieza con barra invertida y se interpreta diferente. Si usamos comilla simple para representar una cadena, todas las comillas simples dentro deben escaparse. Lo mismo con comillas dobles. Así es como se puede representar el texto anterior.

# usando comillas triples
print('''Él dijo, "¿Qué hay?"''')
# escapando comillas simples
print('Él dijo, "¿Qué\'s hay?"')
# escapando comillas dobles
print("Él dijo, \"¿Qué hay?\"")

Al ejecutar el programa anterior, obtenemos:

Él dijo, "¿Qué hay?" Él dijo, "¿Qué hay?" Él dijo, "¿Qué hay?"

Aquí hay una lista de todas las secuencias de escape soportadas por Python.

Secuencia de EscapeDescripción
\newlineBarra invertida y nueva línea ignoradas
\\Barra invertida
\'Comilla simple
\"Comilla doble
\aCampana ASCII
\bRetroceso ASCII
\fSalto de página ASCII
\nNueva línea ASCII
\rRetorno de carro ASCII
\tTabulación horizontal ASCII
\vTabulación vertical ASCII
\oooCarácter con valor octal ooo
\xHHCarácter con valor hexadecimal HH

Aquí algunos ejemplos:

>>> print("C:\\Python32\\Lib")
C:\Python32\Lib
>>> print("Esto se imprime\nen dos líneas")
Esto se imprime
en dos líneas
>>> print("Esto es \x48\x45\x58 representación")
Esto es HEX representación

Cadena Raw para Ignorar Secuencias de Escape

A veces podemos querer ignorar las secuencias de escape dentro de una cadena. Para esto colocamos r o R delante de la cadena. Esto implica que es una raw string y cualquier secuencia de escape dentro será ignorada.

>>> print("Esto es \x61 \nbuen ejemplo")
Esto es a
buen ejemplo
>>> print(r"Esto es \x61 \nbuen ejemplo")
Esto es \x61 \nbuen ejemplo

El Método format() para Formatear Cadenas

El método format() disponible con el objeto string es muy versátil y potente para formatear cadenas. Las cadenas de formato contienen llaves {} como marcadores de posición que se reemplazan.

Podemos usar argumentos posicionales o por palabra clave para especificar el orden.

# Método format() de cadenas en Python
# orden por defecto (implícito)
default_order = "{}, {} y {}".format('Juan','Pedro','Luis')
print('\n--- Orden por Defecto ---')
print(default_order)
# orden usando argumento posicional
positional_order = "{1}, {0} y {2}".format('Juan','Pedro','Luis')
print('\n--- Orden Posicional ---')
print(positional_order)
# orden usando argumento por palabra clave
keyword_order = "{s}, {b} y {j}".format(j='Juan',b='Pedro',s='Luis')
print('\n--- Orden por Palabra Clave ---')
print(keyword_order)

Al ejecutar el programa anterior, obtenemos:

--- Orden por Defecto --- Juan, Pedro y Luis --- Orden Posicional --- Pedro, Juan y Luis --- Orden por Palabra Clave --- Luis, Pedro y Juan

El método format() puede tener especificaciones de formato opcionales. Se separan del nombre del campo usando dos puntos. Por ejemplo, podemos justificar a la izquierda <, a la derecha > o centrar ^ una cadena en el espacio dado.

También podemos formatear enteros como binario, hexadecimal, etc. y floats pueden redondearse o mostrarse en formato exponencial. Hay muchas opciones de formateo. Visita aquí para todo el formateo de cadenas disponible con format().

>>> # formateando enteros
>>> "Representación binaria de {0} es {0:b}".format(12)
'Representación binaria de 12 es 1100'
>>> # formateando floats
>>> "Representación exponencial: {0:e}".format(1566.345)
'Representación exponencial: 1.566345e+03'
>>> # redondeo
>>> "Un tercio es: {0:.3f}".format(1/3)
'Un tercio es: 0.333'
>>> # alineación de cadenas
>>> "|{:<10}|{:^10}|{:>10}|".format('mantequilla','pan','jamón')
'|mantequilla | pan | jamón|'

Formateo Estilo Antiguo

Incluso podemos formatear cadenas como el estilo sprintf() antiguo usado en C. Usamos el operador % para lograr esto.

>>> x = 12.3456789
>>> print('El valor de x es %3.2f' %x)
El valor de x es 12.35
>>> print('El valor de x es %3.4f' %x)
El valor de x es 12.3457

Métodos Comunes de Cadenas en Python

Hay numerosos métodos disponibles con el objeto string. El método format() mencionado arriba es uno de ellos. Algunos métodos comúnmente usados son lower(), upper(), join(), split(), find(), replace() etc. Aquí una lista completa de todos los métodos integrados para trabajar con cadenas en Python.

>>> "PrOgRaMiZ".lower()
'programiz'
>>> "PrOgRaMiZ".upper()
'PROGRAMIZ'
>>> "Esto separará todas las palabras en una lista".split()
['Esto', 'separará', 'todas', 'las', 'palabras', 'en', 'una', 'lista']
>>> ' '.join(['Esto', 'unirá', 'todas', 'las', 'palabras', 'en', 'una', 'cadena'])
'Esto unirá todas las palabras en una cadena'
>>> 'Feliz Año Nuevo'.find('ev')
7
>>> 'Feliz Año Nuevo'.replace('Feliz','Brillante')
'Brillante Año Nuevo'

python

  1. Dominando strings en C#: Fundamentos, operaciones y técnicas avanzadas
  2. Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
  3. Domine las Operaciones de Strings en Python: Replace, Join, Split, Reverse y Conversión de Mayúsculas/Minúsculas
  4. Domine el Método strip() de Python: Guía Completa y Ejemplos Prácticos
  5. Domine str.count() en Python: Cómo Contar Caracteres y Subcadenas con Ejemplos
  6. Domine el Formateo de Strings en Python con format(): Ejemplos Claros
  7. Python len(): Guía Práctica para Medir Longitud de Objetos
  8. Domine el Método String.find() en Python: Sintaxis, Ejemplos y Alternativas
  9. Dominando enumerate() en Python: bucles con índices para listas, tuplas, cadenas y diccionarios
  10. Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
  11. Dominando representaciones String en Enums de Java