python - xc3 - Imprimiendo una cadena codificada en utf-8
xc3 xad python (2)
Para enviar una cadena Unicode a un archivo (o la consola), debe elegir una codificación de texto . En Python, la codificación de texto predeterminada es ASCII, pero para admitir los caracteres hebreos necesita usar una codificación diferente, como UTF-8:
s = unicode(your_object).encode(''utf8'')
f.write(s)
Estoy usando BeautifulSoup para extraer algo de texto de un HTML, pero simplemente no puedo averiguar cómo imprimirlo correctamente en la pantalla (o en un archivo).
Así es como se ve mi clase que contiene el texto:
class Thread(object):
def __init__(self, title, author, date, content = u""):
self.title = title
self.author = author
self.date = date
self.content = content
self.replies = []
def __unicode__(self):
s = u""
for k, v in self.__dict__.items():
s += u"%s = %s " % (k, v)
return s
def __repr__(self):
return repr(unicode(self))
__str__ = __repr__
Cuando intento imprimir una instancia de Thread
esto es lo que veo en la consola:
~/python-tests $ python test.py
u''date = 21:01 03/02/11 content = author = /u05d3"/u05e8 /u05d9/u05d5/u05e0/u05d9 /u05e1/u05d8/u05d0/u05e0/u05e6/'/u05e1/u05e7/u05d5 replies = [] title = /u05de/u05d1/u05e0/u05d4 /u05d4/u05de/u05d1/u05d7/u05df ''
Lo que sea que intente no puedo obtener el resultado que me gustaría (el texto anterior debe ser hebreo). Mi objetivo final es serializar Thread
a un archivo (usando json o pickle) y poder leerlo de nuevo.
Estoy ejecutando esto con Python 2.6.6 en Ubuntu 10.10.
Una buena alternativa a la respuesta de @ mark es establecer la variable de entorno PYTHONIOENCODING=UTF-8
.
cf. Escribiendo cadenas Unicode a través de sys.stdout en Python .