Tracks
/
Python
Python
/
Temario
/
Métodos de string
Mé

Métodos de string en Python

60 ejercicios

Acerca de Métodos de string

Un str es una secuencia inmutable de puntos de código Unicode. Esto puede incluir letras, signos diacríticos, caracteres de posicionamiento, números, símbolos de moneda, emojis, puntuación, espacios y saltos de línea, y mucho más.

Los strings implementan todas las operaciones comunes de secuencia y se pueden recorrer con la sintaxis for item in <str> o for index, item in enumerate(<str>). Se puede hacer referencia a puntos de código individuales (strings de longitud 1) mediante un 0-based index desde la izquierda, o un -1-based index desde la derecha.

Los strings se pueden concatenar con <str> + <other str> o <str>.join(<iterable>) y dividir con <str>.split(<separator>). También ofrecen otras muchas opciones de formato y ensamblaje.

Para trabajar más a fondo con strings, Python ofrece un amplio conjunto de métodos de string para buscar, limpiar, transformar, traducir y muchas otras operaciones.

Algunos de los métodos de str más usados son:

  • Comprobar prefijos y sufijos con <str>.startswith(<substr>) y <str>.endswith(<substr>)
  • Cambiar las mayúsculas y minúsculas de un string con métodos como <str>.title(), <str>.upper()/<str>.lower() y <str>.swapcase()
  • Eliminar caracteres del principio o del final de un string con <str>.strip(<chars>), <str>.lstrip(<chars>) o <str>.rstrip(<chars>)
  • Sustituir substrings con el método <str>.replace(<old>, <new>)

Al ser inmutable, el valor en memoria de un objeto str no puede cambiar; los métodos que parecen modificar un string devuelven una copia nueva o una instancia nueva de ese objeto str.

<str>.endswith(<suffix>) devuelve True si el string termina con <suffix>, y False en caso contrario.

>>> 'My heart breaks. 💔'.endswith('💔')
True

>>> 'cheerfulness'.endswith('ness')
True

# Punctuation is part of the string, so needs to be included in any endswith match.
>>> 'Do you want to 💃?'.endswith('💃')
False

>>> 'The quick brown fox jumped over the lazy dog.'.endswith('dog')
False

<str>.title() analiza un string y pone en mayúscula el primer «carácter» de cada «palabra» que encuentra. En Python, esto depende mucho del códec de idioma que se use y de cómo ese idioma concreto representa las palabras y los caracteres. También puede haber reglas de locale para un idioma o un conjunto de caracteres.

>>> man_in_hat_th = 'ผู้ชายใส่หมวก'
>>> man_in_hat_ru = 'мужчина в шляпе'
>>> man_in_hat_ko = '모자를 쓴 남자'
>>> man_in_hat_en = 'the man in the hat.'

>>> man_in_hat_th.title()
'ผู้ชายใส่หมวก'

>>> man_in_hat_ru.title()
'Мужчина В Шляпе'

>>> man_in_hat_ko.title()
'모자를 쓴 남자'

>> man_in_hat_en.title()
'The Man In The Hat.'

<str>.strip(<chars>) devuelve una copia del str con los <chars> del principio y del final eliminados. Los puntos de código especificados en <chars> no son un prefijo ni un sufijo: se eliminarán todas las combinaciones de esos puntos de código empezando por ambos extremos del string. Si no se especifica nada para <chars>, se eliminarán todas las combinaciones de puntos de código de espacio en blanco. Si solo se quiere eliminar por la izquierda o por la derecha, se pueden usar <str>.lstrip(<chars>) y <str>.rstrip(<chars>).

# This will remove "https://", because it can be formed from "/stph:". 
>>> 'https://unicode.org/emoji/'.strip('/stph:')
'unicode.org/emoji'

# Removal of all whitespace from both ends of the str.
>>> '   🐪🐪🐪🌟🐪🐪🐪   '.strip()
'🐪🐪🐪🌟🐪🐪🐪'

>>> justification = 'оправдание'
>>> justification.strip('еина')
'оправд'

# Prefix and suffix in one step.
>>> 'unaddressed'.strip('dnue')
'address'

>>> '  unaddressed  '.strip('dnue ')
'address'

<str>.replace(<substring>, <replacement substring>) devuelve una copia del string con todas las apariciones de <substring> sustituidas por <replacement substring>.

La cita que aparece a continuación es de The Hunting of the Snark, de Lewis Carroll

# The Hunting of the Snark, by Lewis Carroll
>>> quote = '''
"Just the place for a Snark!" the Bellman cried,
   As he landed his crew with care;
Supporting each man on the top of the tide
   By a finger entwined in his hair.

"Just the place for a Snark! I have said it twice:
   That alone should encourage the crew.
Just the place for a Snark! I have said it thrice:
   What I tell you three times is true."
'''

>>> quote.replace('Snark', '🐲')
...
'\n"Just the place for a 🐲!" the Bellman cried,\n   As he landed his crew with care;\nSupporting each man on the top of the tide\n   By a finger entwined in his hair.\n\n"Just the place for a 🐲! I have said it twice:\n   That alone should encourage the crew.\nJust the place for a 🐲! I have said it thrice:\n   What I tell you three times is true."\n'

>>> 'bookkeeper'.replace('kk', 'k k')
'book keeper'

🌟Añadido recientemente en Python 3.9

Python 3.9 introduce dos métodos de string nuevos que hacen mucho más fácil eliminar prefijos y sufijos.

<str>.removeprefix(<substring>) devuelve el string sin el prefijo (string[len(<substring>):]). Si <substring> no está presente, se devolverá una copia del string original.

# removing a prefix
>>> 'TestHook'.removeprefix('Test')
'Hook'
>>> 'bookkeeper'.removeprefix('book')
'keeper'

<str>.removesuffix(<substring>) devuelve el string sin el sufijo (string[:-len(substring)]). Si <substring> no está presente, se devolverá una copia del string original.

# removing a suffix
>>> 'TestHook'.removesuffix('Hook')
'Test'
>>> 'bookkeeper'.removesuffix('keeper')
'book'

Para ver más ejemplos y métodos, el tutorial informal es un buen punto de partida. How to Unicode, en la documentación de Python, ofrece mucho detalle sobre Unicode, la codificación, los bytes y otras consideraciones técnicas para trabajar con strings en Python.

Python también admite expresiones regulares mediante el módulo re, que se tratará en un concepto futuro.

Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Métodos de string

La práctica está bloqueada

Desbloquea 3 ejercicios más para practicar Métodos de string