Ver índice de contenidos del libro

7.4. Listas y cadenas

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="@@[email protected]@@[email protected]@@[email protected]@[email protected]"
>>> 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)
'[email protected]@[email protected]@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ñ[email protected] [email protected] del [email protected]".

Por otro lado cobra un valor para las palabras cortas y otro valor para las palabras largas (que deben ser cortadas).

  1. 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.
  2. 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ñ[email protected] [email protected] del [email protected] STOP Voy a [email protected] STOPSTOP".

Extender la función anterior para agregar el tratamiento de los puntos.

Copyright (c) 2011-2014 Rosita Wachenchauzer, Margarita Manterola, Maximiliano Curia, Marcos Medrano, Nicolás Paez. La copia y redistribución de esta página se permite bajo los términos de la licencia Creative Commons Atribución - Compartir Obras Derivadas Igual 3.0 siempre que se conserve esta nota de copyright.