Este error se produce cuando pasa una cadena Unicode que contiene caracteres no ingleses (caracteres Unicode más allá de 128) a algo que espera una cadena de bytes ASCII. La codificación predeterminada para una cadena de bytes de Python es ASCII, "que maneja exactamente 128 caracteres (en inglés)". Esta es la razón por la cual intentar convertir caracteres Unicode más allá de 128 produce el error.
El Unicode()
unicode(string[, encoding, errors])
constructor tiene el Unicode firma (cadena [, codificación, errores]). Todos sus argumentos deben ser cadenas de 8 bits.
El primer argumento se convierte a Unicode utilizando la codificación especificada; si se deja fuera el argumento de codificación, la codificación ASCII se utiliza para la conversión, por lo que los personajes mayores que 127 serán tratados como errores
por ejemplo
s = u'La Pe\xf1a'
print s.encode('latin-1')
o
write(s.encode('latin-1'))
codificará con latin-1
La cadena está la salida es un precio como "£ 123" – Rory
que no es ASCII válidos. El signo de libra es el código de char 163, fuera del rango ASCII de 127. –
Debe especificar una codificación que pueda codificar esos caracteres. Los archivos no contienen caracteres; ellos contienen bytes. Las codificaciones convierten caracteres en bytes. –