Python Cadena

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

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

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

Python acceder a los valores en una cadena

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

Para acceder a subcadenas en Python, se pueden usar corchetes para extraer partes de la cadena, como en el siguiente ejemplo:

Ejemplo (Python 2.0+)

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

Resultado de la ejecución del ejemplo anterior:

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

Python concatenación de cadenas

Podemos extraer partes de una cadena y concatenarlas con otras cadenas, como en el siguiente ejemplo:

Ejemplo (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- var1 = 'Hello World!' print "Salida :-", var1[:6] + 'Ejemplo!'

Resultado de la ejecución del ejemplo anterior

输出 :-  Hello Ejemplo!

Python caracteres de escape

Cuando se necesitan usar caracteres especiales en una cadena, Python usa la barra invertida\para escapar caracteres. Como se muestra en la siguiente tabla:

Carácter de escapeDescripción
\(al final de la línea) Continuación de línea
\\ Símbolo de barra invertida
\' Comilla simple
\" Comilla doble
\a Campana
\b Retroceso (Backspace)
\e Escape
\000 Vacío
\n Nueva línea
\v Tabulación vertical
\t Tabulación horizontal
\r Retorno de carro
\f Avance de página
\oyy Número octal, y representa un carácter de 0~7, por ejemplo: \012 representa nueva línea.
\xyy Número hexadecimal, comienza con \x, yy representa el carácter, por ejemplo: \x0a representa nueva línea.
\other Los demás caracteres se muestran en formato normal.

Operadores de cadenas de Python

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

OperadorDescripciónEjemplo
+Concatenación de cadenas
>>>a + b 'HelloPython'
*Repetir y mostrar la cadena
>>>a * 2 'HelloHello'
[]Obtener el carácter en la cadena mediante índice
>>>a[1] 'e'
[ : ]Extraer una parte de la cadena
>>>a[1:4] 'ell'
inOperador de pertenencia: si la cadena contiene el carácter dado, devuelve True
>>>"H" in a True
not in Operador de pertenencia: si la cadena no contiene el carácter dado, devuelve True
>>>"M" not in a True
r/RCadena sin procesar (raw string): en una cadena sin procesar, todas las cadenas se usan directamente según su significado literal, sin escapar caracteres especiales o no imprimibles. Salvo por añadir la letra 'r' (mayúscula o minúscula) antes de la primera comilla, las cadenas sin procesar tienen casi exactamente la misma sintaxis que las cadenas normales.
>>>print r'\n' \n >>> print R'\n' \n
%Cadena de formatoVer el siguiente capítulo

Ejemplo (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- a = "Hello" b = "Python" print "Salida de a + b:", a + b print "Salida de a * 2:", a * 2 print "Salida de a", a[1] print "Salida de a[1:4]:", 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 de la ejecución del programa anterior es:

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

Python formato de cadenas

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

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

Como en el siguiente ejemplo:

#!/usr/bin/python

print "My name is %s and weight is %d kg!" % ('Zara', 21) 

Resultado de salida del ejemplo anterior:

My name is Zara and weight is 21 kg!

Símbolos de formato de cadenas en Python:

Símbolo Descripción
      %cFormatea el carácter y su código ASCII
      %sFormatea una cadena
      %dFormatea un entero
      %uFormatea un entero sin signo
      %oFormatea un número octal sin signo
      %xFormatea un número hexadecimal sin signo
      %XFormatea un número hexadecimal sin signo (en mayúsculas)
      %fFormatea números de punto flotante, se puede especificar la precisión después del punto 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úmero hexadecimal

Instrucciones auxiliares para operadores de formato:

SímboloFunción
*Define el ancho o la precisión del punto 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' antes de números octales, y '0x' o '0X' antes de hexadecimales (dependiendo de si se usa 'x' o 'X')
0Rellena con '0' delante de los números mostrados en lugar de espacios por defecto
%'%%' genera un único '%'
(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)

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


Python comillas triples

En Python, las comillas triples pueden asignar cadenas complejas.

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

La sintaxis de las comillas triples es un par consecutivo de comillas simples o dobles (normalmente se usan en pares).

 >>> hi = '''hi 
there'''
>>> hi   # repr()
'hi\nthere'
>>> print hi  # str()
hi 
there  

Las comillas triples liberan al programador del atolladero de comillas y cadenas especiales, manteniendo el formato de un pequeño bloque de cadena como 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 conviene usar comillas triples, ya que usar el sistema tradicional de caracteres de escape resultaría 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)
''')

Cadenas Unicode

En Python, definir una cadena Unicode es tan simple como definir una cadena normal:

>>> u'Hello World !'
u'Hello World !'

La 'u' minúscula antes de las comillas indica que aquí se crea una cadena Unicode. Si quieres agregar un carácter especial, puedes usar la codificación Unicode-Escape de Python. Como se muestra en el siguiente ejemplo:

>>> u'Hello\u0020World !'
u'Hello World !'

El identificador \u0020 reemplazado indica que se inserta un carácter Unicode con valor de codificación 0x0020 (espacio) en la posición dada.


Funciones integradas de cadenas de Python

Los métodos de cadena se agregaron gradualmente de Python 1.6 a 2.0; también se agregaron a Jython.

Estos métodos implementan la mayoría de los métodos del módulo string. La siguiente tabla muestra los métodos integrados que actualmente admiten las cadenas. Todos los métodos incluyen soporte para Unicode, y algunos incluso están dedicados específicamente a Unicode.

Método Descripción

string.capitalize()

Pone en mayúscula el primer carácter de la cadena

string.center(width)

Devuelve una cadena centrada y rellena con espacios hasta una longitud width

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

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

string.decode(encoding='UTF-8', errors='strict')

Decodifica string usando 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'

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

Codifica string usando 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'

string.endswith(obj, beg=0, end=len(string))

Comprueba si la cadena termina con obj. Si se especifican beg o end, comprueba si termina con obj dentro del rango especificado. Si es así, devuelve True; de lo contrario, devuelve False.

string.expandtabs(tabsize=8)

Convierte los caracteres de tabulación en la cadena string a espacios. El número predeterminado de espacios para una tabulación es 8.

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

Detecta si str está contenido en string, si beg y end especifican un rango, comprueba si está contenido en el rango especificado; si es así, devuelve el valor del índice inicial; de lo contrario, devuelve -1

string.format()

Formatear cadena

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

Igual que el método find(), excepto que si str no está en string, se lanzará una excepción.

string.isalnum()

Si string tiene al menos un carácter y todos los caracteres son letras o dígitos, devuelve

True; de lo contrario, devuelve False

string.isalpha()

Si string tiene al menos un carácter y todos los caracteres son letras, devuelve True,

de lo contrario, devuelve False

string.isdecimal()

Si string solo contiene dígitos decimales, devuelve True; de lo contrario, devuelve False.

string.isdigit()

Si string solo contiene dígitos, devuelve True; de lo contrario, devuelve False.

string.islower()

Si string contiene al menos un carácter que distingue entre mayúsculas y minúsculas, y todos estos caracteres (que distinguen entre mayúsculas y minúsculas) son minúsculas, devuelve True; de lo contrario, devuelve False

string.isnumeric()

Si string solo contiene caracteres numéricos, devuelve True; de lo contrario, devuelve False

string.isspace()

Si string solo contiene espacios, devuelve True; de lo contrario, devuelve False.

string.istitle()

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

string.isupper()

Si string contiene al menos un carácter que distingue entre mayúsculas y minúsculas, y todos estos caracteres (que distinguen entre mayúsculas y minúsculas) son mayúsculas, devuelve True; de lo contrario, devuelve False

string.join(seq)

Usa string como separador para combinar todos los elementos (sus representaciones de cadena) de seq en una nueva cadena

string.ljust(width)

Devuelve una nueva cadena con la cadena original alineada a la izquierda y rellenada con espacios hasta una longitud de width

string.lower()

Convierte todos los caracteres en mayúsculas de string a minúsculas.

string.lstrip()

Elimina los espacios a la izquierda de string

string.maketrans(intab, outtab)

El método maketrans() se utiliza para crear una tabla de conversión de mapeo de caracteres. Para la forma de llamada más simple 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.

max(str)

Devuelve la letra más grandestrde la cadena.

min(str)

Devuelve la letra más pequeñastrde la cadena.

string.partition(str)

Es algo así como una combinación de find() y split(). Desde la primera posición donde aparece str, divide la cadena string en una tupla de 3 elementos (string_pre_str, str, string_post_str). Si string no contiene str, entonces string_pre_str == string.

string.replace(str1, str2,  num=string.count(str1))

Reemplaza str1 por str2 en string; si se especifica num, no se reemplaza más de num veces.

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

Similar a la función find(), devuelve la posición de la última aparición de la cadena; si no hay coincidencia, devuelve -1.

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

Similar a index(), pero devuelve el índice de la última subcadena que coincide.

string.rjust(width)

Devuelve una nueva cadena con la cadena original alineada a la derecha y rellenada con espacios hasta una longitud de width

string.rpartition(str)

Similar a la función partition(), pero busca desde la derecha

string.rstrip()

Elimina los espacios al final de la cadena string.

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

Divide string usando str como separador; si num tiene un valor especificado, solo separanum+1subcadenas.

string.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.

string.startswith(obj, beg=0,end=len(string))

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

string.strip([obj])

Ejecuta lstrip() y rstrip() en string

string.swapcase()

Invierte las mayúsculas y minúsculas en string

string.title()

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

string.translate(str, del="")

Convierte los caracteres de string según la tabla proporcionada por str (que contiene 256 caracteres),

Los caracteres que se desean filtrar se colocan en el parámetro del

string.upper()

Convierte las letras minúsculas de string a mayúsculas

string.zfill(width)

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

Otras extensiones