Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como 7.9. El módulo “string”

7.2. Longitud

La función len devuelve el número de caracteres de una cadena: 1: >>> fruta = "banana" 2: >>> len(fruta) 3: 6 Para obtener la última letra de una cadena puede sentirse tentado a probar algo como esto: 1: longitud = len(fruta) 2: ultima = fruta[longitud] # ERROR! Eso no funcionara. Provoca un error en tiempo de ejecucion IndexError:string index out of range . La razon es que no hay una sexta letra en " banana ". Como empezamos a contar por cero, las seis letras estan numeradas del 0 al 5. Para obtener el ultimo caracter tenemos que restar 1 de longitud: 1: longitud = len(fruta) 2: ultima = fruta[longitud-1] De forma alternativa, podemos usar índices negativos, que cuentan hacia atrás desde el final de la cadena. La expresion fruta[-1] nos da la ultima letra. fruta[-2] nos da la penultima, y así.

7.4. Porciones de cadenas

Llamamos porción a un segmento de una cadena. La selección de una porción es similar a la selección de un carácter: 1: >>> s = "Pedro, Pablo, y María" 2: >>> print 3: s[0:5] 4: Pedro 5: >>> print s[7:12] 6: Pablo 7: >>> print 8: s[15:20] 9: María El operador [n:m] devuelve la parte de la cadena desde el enésimo carácter hasta el “enésimo”, incluyendo el primero pero excluyendo el ultimo. Este comportamiento contradice a nuestra intuicion; tiene mas sentido si imagina los índices se~nalando entre los caracteres, como en el siguiente diagrama: Si omite el primer índice (antes de los dos puntos), la porcion comienza al principio de la cadena. Si omite el segundo índice, la porcion llega al final de la cadena. Así: 1: >>> fruta = "banana" 2: >>> fruta[:3] 3: 'ban' 4: >>> 5: fruta[3:] 6: 'ana' ¿Que cree usted que significa s [:]?...

7.6. Las cadenas son inmutables

Es tentador usar el operador [] en el lado izquierdo de una asignación, con la intención de cambiar un carácter en una cadena. Por ejemplo: 1: saludo = "Hola, mundo" 2: saludo[0] = 'M' # ERROR! 3: print saludo En lugar de presentar la salida Mola, mundo, este codigo presenta el siguiente error en tiempo de ejecucion TypeError : object doesn't 1: support item 2: assignment. Las cadenas son inmutables, lo que signi¯ca que no puede cambiar una cadena existente. Lo mas que puede hacer es crear una nueva cadena que sea una variacion de la original: 1: saludo = "Hola, mundo" 2: nuevoSaludo = 'M' + saludo[1:] 3: print nuevoSaludo Aquí la solución es concatenar una nueva primera letra a una porción de saludo. Esta operación no tiene efectos sobre la cadena original.

7.9. El módulo “string”

El modulo string contiene funciones útiles para manipular cadenas. Como es habitual, tenemos que importar el modulo antes de poder usarlo: 1: >>> import string El modulo string incluye una funcion llamada find que hace lo mismo que la función encuentra que escribimos. Para llamarla debemos especificar el nombre del modulo y el nombre de la funcion por medio de la notacion de punto. 1: >>> fruta = "banana" 2: >>> indice = string.find(fruta, 3: "a" ) 4: >>> print indice 5: 1 Este ejemplo demuestra uno de los beneficios de los modulos: ayudan a evitar las colisiones entre los nombres de las funciones predefinidas y las definidas por el usuario. Al usar la notacion de punto podríamos especificar que version de find queremos en caso de haberle daddo un nombre en ingles a nuestra funcion. En realidad, string.find es mas general que nuestra version. Para empezar, puede encontrar subcadenas, no solo caractere...