A partir de una cadena de caracteres, podemos obtener una lista con
sus componentes usando la función split
.
Si queremos obtener las palabras (separadas entre sí por espacios) que
componen la cadena xs
escribiremos simplemente xs.split()
:
>>> c = " Una cadena con espacios "
>>> c.split()
['Una', 'cadena', 'con', 'espacios']
En este caso split
elimina todos los blancos de más, y devuelve sólo
las palabras que conforman la cadena.
Si en cambio el separador es otro carácter (por ejemplo la arroba,
@
), se lo debemos pasar como parámetro a la función split
. En ese
caso se considera una componente todo lo que se encuentra entre dos
arrobas consecutivas. En el caso particular de que el texto contenga
dos arrobas una a continuación de la otra, se devolverá una componente
vacía:
>>> d="@@Una@@@cadena@@@con@@arrobas@"
>>> d.split("@")
['', '', 'Una', '', '', 'cadena', '', '', 'con', '', 'arrobas', '']
>>>
La casi–inversa de split
es una función join
que tiene la siguiente sintaxis:
<separador>.join( <lista de componentes a unir>)
y que devuelve la cadena que resulta de unir todas las componentes separadas entre sí por medio del separador:
>>> xs = ['aaa', 'bbb', 'cccc']
>>> " ".join(xs)
'aaa bbb cccc'
>>> ", ".join(xs)
'aaa, bbb, cccc'
>>> "@@".join(xs)
'aaa@@bbb@@cccc'
7.4.1. Ejercicios con listas y cadenas
Ejercicio 7.9. Escribir una función que reciba como parámetro una cadena de palabras separadas por espacios y devuelva, como resultado, cuántas palabras de más de cinco letras tiene la cadena dada.
Ejercicio 7.10. Procesamiento de telegramas. Un oficial de correos decide optimizar el trabajo de su oficina cortando todas las palabras de más de cinco letras a sólo cinco letras (e indicando que una palabra fue cortada con el agregado de una arroba). Además elimina todos los espacios en blanco de más.
Por ejemplo, al texto " Llego mañana alrededor del mediodía "
se
transcribe como "Llego mañan@ alred@ del medio@"
.
Por otro lado cobra un valor para las palabras cortas y otro valor para las palabras largas (que deben ser cortadas).
- Escribir una función que reciba un texto, la longitud máxima de las palabras, el costo de cada palabra corta, el costo de cada palabra larga, y devuelva como resultado el texto del telegrama y el costo del mismo.
- Los puntos se reemplazan por la palabra especial
"STOP"
, y el punto final (que puede faltar en el texto original) se indica como"STOPSTOP"
.
Al texto:
" Llego mañana alrededor del mediodía. Voy a almorzar "
Se lo transcribe como:
"Llego mañan@ alred@ del medio@ STOP Voy a almor@ STOPSTOP".
Extender la función anterior para agregar el tratamiento de los puntos.