Me sale un mensaje raro en python

Iniciado por bonzay, 1 Mayo 2017, 16:54 PM

0 Miembros y 1 Visitante están viendo este tema.

bonzay

Este es el código:
Código (python) [Seleccionar]
# - *- coding: utf-8 *- -
formatter = "%r %r %r %r"

print formatter % (1, 2, 3, 4)
print formatter % ("one", "two", "three", "four")
print formatter % (True, False, False, True)
print formatter % (formatter, formatter, formatter, formatter)
print formatter % (
"i had this thing.",
"that you could type up right.",
"but it didn´t sing.",
"so I said goodnight."
)


pero al cargarlo en cmd me sale:

but it didn\xc2\xb4 en vez de salirme but it didn´t sing. ¿Alguien sabe porque?

Eleкtro

#1
Cita de: bonzay en  1 Mayo 2017, 16:54 PM
but it didn\xc2\xb4 en vez de salirme but it didn´t sing. ¿Alguien sabe porque?

Bueno, antes que nada cabe mencionar que para empezar la palabra está mal escrita puesto que estás usando un diacritico agudo; en su lugar deberías usar una comilla ( didn't ) y fin de todos tus problemas.

Con respecto a lo que te sucede, se debe a que estás usando el especificador %r ( repr() ) y esto genera una representación evaluable/compilable del objeto, en este caso del caracter especial ( ´ ) del set de caracteres Latin1/Windows-1252, generando la secuencia de bytes unicode de dicho caracter. Para solucionarlo sencillamente no uses %r, utiliza el especificador %s ( str() ) para devolver una representación literal de los caracteres que componen al string.

PD: Quizás haya otras formas de solucionarlo sin reemplazar el uso de %r, no domino mucho Python.









engel lex

el ´ que tienes no es un apostrofe inglés ' , es un acento español, esto no es un caracter ascii, por lo que supongo estás en windows y según ya explicó elektro en un tema, la cofificación a usar no es utf8 en ese caso

https://foro.elhacker.net/buscador-t466577.0.html
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

bonzay

Muchas gracias lo del acento me quedo claro el resto del % no entendi nada, me estoy iniciando en python yo solo con un libro de Zed A. Shaw traducido al español  :rolleyes:

solo llego a saber que %s se usa para cadenas de letras y %r no le pillo aún el uso porque según lei para entenderlo es un código genérico que sirve para todo.