replace de cadena de caracteres

Chema Cortes chemacortes en wanadoo.es
Mar Mayo 28 10:20:00 CEST 2002


> A modo de curiosidad os queria preguntar, por que la diferencia de poner:
> >>>a
> 'modo=simple'
> 
> y
> 
> >>> print a
> modo=simple
> 
> es decir, porque uno me imprime las comillas y el otro no?

Voy a ver si te lo explico. Todo objeto tiene dos métodos que se emplean para su "salida" por pantalla: __str__ (conversión a string del objeto) y __repr__ ("representación" en texto del objeto).

Ambos métodos son invocados cuando usas las funciones str() y repr(). Suelen ser lo mismo en la mayoría de objetos, pero se deja abierta la puerta para que se diferencien, como en el caso siguiente:

>>> a=unicode("ñ","latin1")
>>> print str(a)
ñ
>>> print repr(a)
u'\xf1'

Aquí se ve claro que el str() "transforma" a string, mientras que el repr() intenta ser lo más fiel al original.

Aclarado esto, queda por decir que toda salida en el shell interactivo de python la realiza el método sys.displayhook(value), y que su definición depende de si lo estás usando desde el shell de linux, desde pythonwin, ó desde el idle. Cada cual tiene su propio displayhook, y es el que "añade" las comillas que tanto te mosqueaban.

Prueba lo siguente:

def mihook(value):
  print value

import sys
sys.displayhook=mihook 

Ahora verás como coinciden:

>>> a="Hola, mundo"
>>> print a
Hola, mundo
>>> a
Hola, mundo


La diferencia de las comillas es casi irrelevante. Suele dar mayores problemas con los números reales:

>>> 1-1e-15
0.999999999999999
>>> print 1-1e-15
1.0

Saludos,
-- 
Chema Cortes (chemacortes en wanadoo.es) | 
LinuxUser#142755 - SuSE Linux 8.0
ZARALINUX http://www.zaralinux.org | La 
ignorancia se apodera de quien
PYTANDO http://pytando.sf.net | se contenta con 
lo que sabe
_____________________________________________________________________
No olvides nada. Recuerda los cumpleaños, tus citas, tus cenas románticas y 
todo lo que quieras usando la Agenda personal de Wanadoo.es, desde cualquier 
lugar conectado a Internet. Visítala en http://www.wanadoo.es/agenda






Más información sobre la lista de distribución Python-es