Python3 Cadenas

Las cadenas son el tipo de dato más utilizado en Python. Podemos usar comillas ('o") para crear cadenas.

Crear una cadena es muy sencillo, solo hay que asignar un valor a una variable. Por ejemplo:

var1 = 'Hello World!' var2 = "Ejemplo"

Python accede a los valores en una cadena

Python no admite el tipo de carácter individual; un solo carácter también se usa como una cadena en Python.

Python accede a subcadenas, puede usar corchetes[]para extraer subcadenas. La sintaxis para extraer cadenas es la siguiente:

variable[índice inicial:índice final]

Los valores de índice comienzan con0como valor inicial,-1es la posición inicial desde el final.

Como en el siguiente ejemplo:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 var1 = 'Hello World!' var2 = "Ejemplo" print ("var1[0]: ", var1[0]) print ("var2[1:5]: ", var2[1:5])

El resultado de ejecutar el ejemplo anterior es:

var1[0]:  H
var2[1:5]:  unoo

Actualización de cadenas en Python

Puedes extraer una parte de la cadena y concatenarla con otros campos, como en el siguiente ejemplo:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 var1 = 'Hello World!' print ("Cadena actualizada:", var1[:6] + 'Ejemplo!')

El resultado de ejecutar el ejemplo anterior es:

已更新字符串 :  Hello Ejemplo!

Caracteres de escape en Python

Cuando se necesitan usar caracteres especiales en una cadena, Python usa la barra invertida\como carácter de escape. Como se muestra en la siguiente tabla:

Carácter de escapeDescripciónEjemplo
\ (al final de la línea) Continuación de línea
>>> print("line1 \
... line2 \
... line3")
line1 line2 line3
>>> 
\\ Símbolo de barra invertida
>>> print("\\")
\
\' Comilla simple
>>> print('\'')
'
\" Comilla doble
>>> print("\"")
"
\a Campana (bell)
>>> print("\a")
Emite un sonido en la computadora al ejecutarse.
\b Retroceso (Backspace)
>>> print("Hello \b World!")
Hello World!
\000 Vacío
>>> print("\000")

>>> 
\n Nueva línea
>>> print("\n")


>>>
\v Tabulación vertical
>>> print("Hello \v World!")
Hello 
       World!
>>>
\t Tabulación horizontal
>>> print("Hello \t World!")
Hello      World!
>>>
\r Retorno de carro, mueve\rel contenido posterior al inicio de la cadena y reemplaza uno a uno los caracteres iniciales hasta que\rel contenido posterior se haya reemplazado por completo.
>>> print("Hello\rWorld!")
World!
>>> print('google ejemplo taobao\r123456')
123456 ejemplo taobao
\f Salto de página (form feed)
>>> print("Hello \f World!")
Hello 
       World!
>>> 
\yyy Número octal, y representa un carácter de 0 a 7, por ejemplo: \012 representa nueva línea.
>>> print("\110\145\154\154\157\40\127\157\162\154\144\41")
Hello World!
\xyy Número hexadecimal, comienza con \x, y representa el carácter, por ejemplo: \x0a representa nueva línea.
>>> print("\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21")
Hello World!
\other Otros caracteres se muestran en formato normal.  

Usando\r para implementar un progreso porcentual:

Ejemplo

import time

for i in range(101): # Agregar gráfico de barra de progreso y porcentaje
    bar = '[' + '=' * (i // 2) + ' ' * (50 - i // 2) + ']'
    print(f"\r{bar} {i:3}%", end='', flush=True)
    time.sleep(0.05)
print()

En el siguiente ejemplo, usamos diferentes caracteres de escape para demostrar los efectos de comillas simples, nueva línea, tabulación, retroceso, salto de página, ASCII, binario, octal y hexadecimal:

Ejemplo

print('\'Hello, world!\'')  # Salida: 'Hello, world!'

print("Hello, world!\nHow are you?")  # Salida: Hello, world!
                                        #       How are you?

print("Hello, world!\tHow are you?")  # Salida: Hello, world! How are you?

print("Hello,\b world!")  # Salida: Hello world!

print("Hello,\f world!")  # Salida:
                           # Hello,
                           #  world!

print("El valor ASCII correspondiente a A es: ", ord('A'))  # Salida: El valor ASCII correspondiente a A es: 65

print("\x41 es el código ASCII de A")  # Salida: A es el código ASCII de A

decimal_number = 42
binary_number = bin(decimal_number)  # Convertir decimal a binario
print('Convertir a binario:', binary_number)  # Convertido a binario: 0b101010

octal_number = oct(decimal_number)  # Convertir decimal a octal
print('Convertir a octal:', octal_number)  # Convertido a octal: 0o52

hexadecimal_number = hex(decimal_number)  # Convertir decimal a hexadecimal
print('Convertir a hexadecimal:', hexadecimal_number) # Convertido a hexadecimal: 0x2a

Operadores de cadena en Python

En la siguiente tabla, el valor de la variable a es la cadena "Hello" y el valor de la variable b es "Python":

OperadorDescripciónEjemplo
+Concatenación de cadenasa + b da como resultado: HelloPython
*Repite la cadenaa*2 da como resultado: HelloHello
[]Obtiene el carácter de la cadena mediante índiceae
[ : ]Extrae una parte de la cadena, siguiendo el principiode intervalo cerrado a la izquierda y abierto a la derecha; str[0:2] no incluye el tercer carácter.a[1:4] da como resultadoell
inOperador de pertenencia - Devuelve True si la cadena contiene el carácter dado. 'H' in aResultado: True
not in Operador de pertenencia - Devuelve True si la cadena no contiene el carácter dado. 'M' not in aResultado: True
r/RCadena sin procesar (raw string) - Cadena sin procesar: todas las cadenas se usan directamente de acuerdo con su significado literal, sin escapar caracteres especiales o no imprimibles. La cadena sin procesar, excepto que se agrega la letra antes de la primera comilla de la cadenar(puede ser mayúscula o minúscula), tiene una sintaxis casi idéntica a la de una cadena normal.
print( r'\n' )
print( R'\n' )
%Cadena de formatoConsulta el contenido de la siguiente sección.

Ejemplo (Python 3.0+)

#!/usr/bin/python3 a = "Hello" b = "Python" print("a + b da como resultado:", a + b) print("a * 2 da como resultado:", a * 2) print("a", a[1]) print("a[1:4] da como resultado:", a[1:4]) if( "H" in a) : print("H está en la variable a") else : print("H no está en la variable a") if( "M" not in a) : print("M no está en la variable a") else : print("M está en la variable a") print (r'\n') print (R'\n')

El resultado del ejemplo anterior es:

a + b 输出结果: HelloPython
a * 2 输出结果: HelloHello
a[1] 输出结果: e
a[1:4] 输出结果: ell
H 在变量 a 中
M 不在变量 a 中
\n
\n

Formato de cadenas en Python

Python admite la salida de cadenas formateadas. Aunque esto puede implicar expresiones muy complejas, el uso más básico es insertar un valor en una cadena con el formato %s.

En Python, el formateo de cadenas usa la misma sintaxis que la función sprintf en C.

Ejemplo (Python 3.0+)

#!/usr/bin/python3 print ("¡Me llamo %s y tengo %d años!" % ('Xiaoming', 10))

El resultado del ejemplo anterior es:

我叫 小明 今年 10 岁!

Símbolos de formato de cadenas de Python:

Símbolo Descripción
      %cFormatea caracteres y su código ASCII
      %sFormatea cadenas
      %dFormatea enteros
      %uFormatea enteros sin signo
      %oFormatea números octales sin signo
      %xFormatea números hexadecimales sin signo
      %XFormatea números hexadecimales sin signo (mayúsculas)
      %fFormatea números de punto flotante, puede especificar la precisión decimal
      %eFormatea números de punto flotante con notación científica
      %EIgual que %e, formatea números de punto flotante con notación científica
      %gAbreviatura de %f y %e
      %GAbreviatura de %f y %E
      %pFormatea la dirección de una variable con números hexadecimales

Directivas auxiliares de los operadores de formato:

SímboloFunción
*Define el ancho o la precisión decimal
-Se usa para alinear a la izquierda
+Muestra un signo más ( + ) antes de números positivos
<sp>Muestra un espacio antes de números positivos
#Muestra '0' delante de números octales, y '0x' o '0X' delante de números hexadecimales (dependiendo de si se usa 'x' o 'X')
0Rellena con '0' delante de los números mostrados en lugar del espacio predeterminado
%'%%' produce un solo '%'
(var)Variable de mapeo (parámetro de diccionario)
m.n.m es el ancho total mínimo de visualización, n es el número de dígitos después del punto decimal (si está disponible)

Desde Python 2.6, se agregó una nueva función para formatear cadenasstr.format(), que mejora la funcionalidad del formato de cadenas.


Comillas triples en Python

Las comillas triples de Python permiten que una cadena abarque varias líneas; la cadena puede contener saltos de línea, tabulaciones y otros caracteres especiales. Ejemplo:

Ejemplo (Python 3.0+)

#!/usr/bin/python3 para_str = """Este es un ejemplo de cadena multilínea. Una cadena multilínea puede usar tabuladores. TAB (\t). También se puede usar el carácter de nueva línea [\n ]。 """ print (para_str)

El resultado de ejecutar el ejemplo anterior es:

这是一个多行字符串的实例
多行字符串可以使用制表符
TAB (    ).
也可以使用换行符 [ 
 ]。

Las comillas triples liberan al programador del atolladero de las comillas y las cadenas especiales, manteniendo desde el principio hasta el final el formato de un pequeño bloque de cadena, que es el llamado formato WYSIWYG (lo que ves es lo que obtienes).

Un caso de uso típico es cuando necesitas un bloque de HTML o SQL; en ese momento, usar combinación de cadenas y escapes de caracteres especiales resulta muy tedioso.

errHTML = ''' <HTML><HEAD><TITLE> Friends CGI Demo</TITLE></HEAD> <BODY><H3>ERROR</H3> <B>%s</B><P> <FORM><INPUT TYPE=button VALUE=Back ONCLICK="window.history.back()"></FORM> </BODY></HTML> ''' cursor.execute(''' CREATE TABLE users ( login VARCHAR(8), uid INTEGER, prid INTEGER) ''')

f-string

f-string se agregó en versiones posteriores a Python 3.6, se denomina cadena de formato literal y es la nueva sintaxis para formatear cadenas.

Antes solíamos usar el signo de porcentaje (%):

Ejemplo

>>> name = 'Ejemplo'
>>> 'Hello %s' % name
'Hello Ejemplo'

f-stringLas cadenas de formato comienzan confcomo prefijo, seguidas de la cadena; las expresiones dentro de la cadena se encierran con llaves {}, y se reemplazan por el valor calculado de la variable o expresión. Ejemplo:

Ejemplo

>>> name = 'Ejemplo'
>>> f'Hello {name}'  # Reemplazar variable
'Hello Ejemplo'
>>> f'{1+2}'         # Usar expresión
'3'

>>> w = {'name': 'Ejemplo', 'url': 'www.example.com'}
>>> f'{w["name"]}: {w["url"]}'
'Ejemplo: www.example.com'

Usar este método es claramente más simple, ya no hay que decidir si usar %s o %d.

En la versión de Python 3.8 se puede usar el=símbolo para concatenar la expresión de operación y su resultado:

Ejemplo

>>> x = 1
>>> print(f'{x+1}')   # Python 3.6
2

>>> x = 1
>>> print(f'{x+1=}')   # Python 3.8
x+1=2

Cadenas Unicode

En Python 2, las cadenas normales se almacenan en código ASCII de 8 bits, mientras que las cadenas Unicode se almacenan como cadenas Unicode de 16 bits, lo que permite representar más conjuntos de caracteres. La sintaxis utilizada es añadir el prefijo delante de la cadena.u。

En Python 3, todas las cadenas son cadenas Unicode.


Funciones integradas de cadenas de Python

Las funciones integradas más comunes para cadenas de Python son las siguientes:

N.ºMétodo y descripción
1

capitalize()
Convierte el primer carácter de la cadena a mayúscula.

2

center(width, fillchar)

Devuelve una cadena centrada con el ancho especificado width; fillchar es el carácter de relleno, por defecto un espacio.
3

count(str, beg= 0,end=len(string))


Devuelve el número de veces que aparece str en string; si se especifican beg o end, devuelve el número de apariciones de str dentro del rango especificado.
4

bytes.decode(encoding="utf-8", errors="strict")


En Python 3 no hay un método decode, pero podemos usar el método decode() del objeto bytes para decodificar un objeto bytes dado; este objeto bytes puede ser devuelto por str.encode().
5

encode(encoding='UTF-8',errors='strict')


Codifica la cadena con el formato de codificación especificado por encoding; si hay un error, por defecto se lanza una excepción ValueError, a menos que errors especifique 'ignore' o 'replace'.
6

endswith(suffix, beg=0, end=len(string))
Comprueba si la cadena termina con suffix; si se especifican beg o end, comprueba si termina con suffix dentro del rango especificado. Si es así, devuelve True; de lo contrario, devuelve False.

7

expandtabs(tabsize=8)


Convierte los caracteres de tabulación en la cadena string en espacios; el número predeterminado de espacios por tabulación es 8.
8

find(str, beg=0, end=len(string))


Detecta si str está contenido en la cadena; si se especifica un rango beg y end, comprueba si está contenido en ese rango. Si lo está, devuelve el índice inicial; de lo contrario, devuelve -1.
9

index(str, beg=0, end=len(string))


Igual que el método find(), excepto que si str no está en la cadena, lanza una excepción.
10

isalnum()


Comprueba si la cadena está compuesta por letras y números, es decir, todos los caracteres de la cadena son letras o dígitos. Si la cadena tiene al menos un carácter y todos son letras o dígitos, devuelve True; de lo contrario, devuelve False.
11

isalpha()


Si la cadena tiene al menos un carácter y todos los caracteres son letras o caracteres chinos, devuelve True; de lo contrario, devuelve False.
12

isdigit()


Si la cadena solo contiene dígitos, devuelve True; de lo contrario, devuelve False.
13

islower()


Si la cadena contiene al menos un carácter que distingue entre mayúsculas y minúsculas, y todos esos caracteres (sensibles a mayúsculas/minúsculas) están en minúscula, devuelve True; de lo contrario, devuelve False.
14

isnumeric()


Si la cadena contiene solo caracteres numéricos, devuelve True; de lo contrario, devuelve False.
15

isspace()


Si la cadena contiene solo espacios en blanco, devuelve True; de lo contrario, devuelve False.
16

istitle()


Si la cadena está en formato título (ver title()), devuelve True; de lo contrario, devuelve False.
17

isupper()


Si la cadena contiene al menos un carácter que distingue entre mayúsculas y minúsculas, y todos esos caracteres (sensibles a mayúsculas/minúsculas) están en mayúscula, devuelve True; de lo contrario, devuelve False.
18

join(seq)


Usa la cadena especificada como separador y combina todos los elementos (representación en cadena) de seq en una nueva cadena.
19

len(string)


Devuelve la longitud de la cadena.
20

ljust(width[, fillchar])


Devuelve una nueva cadena con la cadena original alineada a la izquierda y rellenada con fillcar hasta la longitud width; fillchar por defecto es un espacio.
21

lower()


Convierte todos los caracteres en mayúscula de la cadena a minúscula.
22

lstrip()


Elimina los espacios o el carácter especificado a la izquierda de la cadena.
23

maketrans()


Crea una tabla de conversión de mapeo de caracteres; en la forma más simple de llamada con dos parámetros, el primer parámetro es una cadena que indica los caracteres a convertir, y el segundo parámetro también es una cadena que indica el destino de la conversión.
24

max(str)


Devuelve la letra más grande de la cadena str.
25

min(str)


Devuelve la letra más pequeña de la cadena str.
26

replace(old, new [, max])


Reemplaza old por new en la cadena; si se especifica max, no se reemplaza más de max veces.
27

rfind(str, beg=0,end=len(string))


Similar a la función find(), pero comienza a buscar desde la derecha.
28

rindex( str, beg=0, end=len(string))


Similar a index(), pero desde la derecha.
29

rjust(width,[, fillchar])


Devuelve una nueva cadena con la cadena original alineada a la derecha y rellenada con fillchar (por defecto espacio) hasta la longitud width.
30

rstrip()


Elimina los espacios o el carácter especificado al final de la cadena.
31

split(str="", num=string.count(str))


Divide la cadena usando str como separador; si num tiene un valor especificado, solo se toman num+1 subcadenas.
32

splitlines([keepends])


Divide por líneas ('\r', '\r\n', '\n') y devuelve una lista que contiene cada línea como elemento; si el parámetro keepends es False, no incluye los saltos de línea; si es True, los conserva.
33

startswith(substr, beg=0,end=len(string))


Comprueba si la cadena comienza con la subcadena especificada substr; si es así, devuelve True; de lo contrario, devuelve False. Si se especifican beg y end, comprueba dentro del rango especificado.
34

strip([chars])


Ejecuta lstrip() y rstrip() en la cadena.
35

swapcase()


Convierte en la cadena las mayúsculas a minúsculas y las minúsculas a mayúsculas.
36

title()


Devuelve una cadena en "formato título", es decir, todas las palabras comienzan con mayúscula y el resto de las letras son minúsculas (ver istitle()).
37

translate(table, deletechars="")


Convierte los caracteres de string según la tabla dada por table (que contiene 256 caracteres); los caracteres a filtrar se colocan en el parámetro deletechars.
38

upper()


Convierte las letras minúsculas de la cadena a mayúsculas.
39

zfill (width)


Devuelve una cadena de longitud width, con la cadena original alineada a la derecha y rellenada con ceros a la izquierda.
40

isdecimal()


Comprueba si la cadena contiene solo caracteres decimales; si es así, devuelve true; de lo contrario, devuelve false.
Otras extensiones