Las cadenas de caracteres (strings
) disponen de una gran cantidad de métodos. Hay que recordar que las cadenas de caracteres son inmutables, y por tanto ninguno de estos métodos modifica la cadena que recibe como argumento, sino que devuelven ya sea información de la misma (por ejemplo, una variable booleana), o una copia modificada.
Devuelve la concatenación de todos los elementos de la secuencia seq
, separados por la cadena s
.
lista = ["hola", "foo", "bar"]
cadena = " ".join(lista)
print(cadena)
cadena = ", ".join(lista)
print(cadena)
cadena = "\t".join(lista)
print(cadena)
Divide la cadena s
un número n
de veces, tomando t
como separador. Ambos argumentos son opcionales: por defecto divide el máximo de veces tomando como separador cualquier espacio en blanco, es decir, cualquier combinación de uno o más espacios y/o tabuladores.
cadena = "buen día, Python"
print(cadena.split())
print(cadena.split(","))
print(cadena.split(" ", 1))
espacio = "cadena con\tespacio en \t blanco"
print(espacio)
print(espacio.split())
Reemplaza en la cadena s
las apariciones de la cadena viejo
por la cadena nuevo
. Opcionalmente se puede determinar la cantidad máxima de veces a realizar la sustitución (por defecto sustituye todas las apariciones de la cadena).
s = "esto es foo, aquello es foo, y lo otro es foo"
print(s.replace("foo", "bar"))
print(s.replace("foo", "bar", 2))
print(s.replace("foo", "bar", 1))
Hay una serie de métodos específicos para procesar la caja (mayúsculas/minúsculas) de los caracteres de las cadenas:
s.capitalize() | Devuelve una copia de la cadena s con el primer carácter en mayúsculas. |
s.title() | Devuelve una copia de la cadena s con el primer carácter de cada palabra en mayúsculas. |
s.swapcase() | Devuelve una copia de la cadena s cambiando la caja de cada carácter. |
s.lower() | Devuelve una copia de la cadena s cambiando todos los caracteres a minúsculas. |
s.upper() | Devuelve una copia de la cadena s cambiando todos los caracteres a mayúsculas. |
cadena = "cambia la caja"
mayuscula = cadena.capitalize()
print(mayuscula)
titulo = mayuscula.title()
print(titulo)
cambio = titulo.swapcase()
print(cambio)
minusculas = cambio.lower()
print(minusculas)
mayusculas = minusculas.upper()
print(mayusculas)
Hay otro conjunto de métodos que verifican si una cadena posee cierta propiedad, y devuelve la variable booleana (True o False) correspondiente.
s.isalnum() | Devuelve True (verdadero) si s no es vacía y todos sus caracteres son alfanuméricos. |
s.isalpha() | Devuelve True (verdadero) si s no es vacía y todos sus caracteres son alfabéticos. |
s.islower() | Devuelve True (verdadero) si s tiene al menos un carácter con caja, y todos sus caracteres con caja son minúsculas. |
s.isupper() | Devuelve True (verdadero) si s tiene al menos un carácter con caja, y todos sus caracteres con caja son mayúsculas. |
s.istitle() | Devuelve True (verdadero) si s no es vacía, y tiene un estilo de caja de título (ver además s.title()). |
s.isnumeric() | Devuelve True (verdadero) si s no es vacía, y todos sus caracteres son caracteres numéricos Unicode, tales como dígitos, fracciones, numerales, etc. |
s.isdigit() | Devuelve True (verdadero) si s no es vacía y todos sus caracteres son dígitos Unicode base 10; es un subconjunto de .isnumeric. |
s.isdecimal() | Devuelve True (verdadero) si s no es vacía y todos sus caracteres son dígitos Unicode base 10 consecutivos; es un subconjunto de .isdigit. |
s.isprintable() | Devuelve True (verdadero) si s es vacía, o si todos sus caracteres son imprimibles, incluido el espacio en blanco, pero no el salto de línea. |
s.isspace() | Devuelve True (verdadero) si s no es vacía, y todos sus caracteres son espacios en blanco. |
s.startswith(t [, inicio, fin]) | Devuelve True (verdadero) si s (opcionalmente, la partición [inicio:fin] de s) comienza con la cadena t. |
s.endswith(t [, inicio, fin]) | Devuelve True (verdadero) si s (opcionalmente, la partición [inicio:fin] de s) termina con la cadena t. |
cadena_alpha = "ABCdeFGH"
cadena_alnum = "ABCdef123"
print(cadena_alpha.isalpha(), cadena_alpha.isalnum())
print(cadena_alnum.isalpha(), cadena_alnum.isalnum())
cadena = "asdlkfj sodiflkj"
print(cadena.islower(), cadena.isupper(), cadena.istitle())
cadena = "AKJHD KJHBDIU"
print(cadena.islower(), cadena.isupper(), cadena.istitle())
cadena = "Aaskdjh Doiuelkr"
print(cadena.islower(), cadena.isupper(), cadena.istitle())
a = '2'
print(a, a.isnumeric(), a.isdigit(), a.isdecimal())
a = '0.2'
print(a, a.isnumeric(), a.isdigit(), a.isdecimal())
a = '\u0661\u0662\u0663\u0664'
print(a, a.isnumeric(), a.isdigit(), a.isdecimal())
a = '\u2155'
print(a, a.isnumeric(), a.isdigit(), a.isdecimal())
a = '\u00b9\u00b2\u00b3\u2074'
print(a, a.isnumeric(), a.isdigit(), a.isdecimal())
a = '\u4e00\u4e8c\u4e09\u56db'
print(a, a.isnumeric(), a.isdigit(), a.isdecimal())
cadena = " "
print(cadena.isprintable(), cadena.isspace())
cadena = " \t "
print(cadena.isprintable(), cadena.isspace())
cadena = " \n "
print(cadena.isprintable(), cadena.isspace())
Hay además una serie de métodos que devuelven información de tipo estadístico sobre una cadena:
s.count(t [, inicio, fin]) | Devuelve el número de veces que aparece la cadena t en s (opcionalmente, en la partición [inicio:fin] |
s.find(t [, inicio, fin]) | Devuelve el índice de la primera aparición de la cadena t en s (opcionalmente, en la partición [inicio:fin]. Si la cadena no aparece, devuelve -1. |
s.rfind(t [, inicio, fin]) | Devuelve el índice de la última aparición de la cadena t en s (opcionalmente, en la partición [inicio:fin] Si la cadena no aparece, devuelve -1. |
s.index(t [, inicio, fin]) | Devuelve el índice de la primera aparición de la cadena t en s (opcionalmente, en la partición [inicio:fin]. Si la cadena no aparece, devuelve un error. |
s.rindex(t [, inicio, fin]) | Devuelve el índice de la última aparición de la cadena t en s (opcionalmente, en la partición [inicio:fin] Si la cadena no aparece, devuelve un error. |
cadena = "esta es una cadena con varias repeticiones"
print(cadena.count("e"))
print(cadena.count("es"))
print(cadena.find("a"))
print(cadena.rfind("a"))
print(cadena.find("x"))
print(cadena.index("n"))
print(cadena.rindex("n"))
print(cadena.index("z"))