Python 3: ¿Cómo puedo tomar un valor de una variable y convertirlo en un carácter Unicode?
Estoy intentando tomar un valor y convertirlo en un carácter Unicode, ya sea por nombre o por valor. Todos los ejemplos que he visto tienen valores codificados en las cadenas (como q = ‘\uc3a8’), pero eso no es realmente útil para mí. Estoy obteniendo entrada de nombres numéricos o literales en variables. Simplemente no puedo entender cómo hacerlo funcionar. He intentado varias iteraciones de codificar, decodificar, evaluar, cadenas r, cadenas f y no obtengo nada. ¿Qué me falta? Esto es en Python 3.10.
LATIN_SMALL_LETTER_E_WITH_GRAVE = 0xC3A8
j = LATIN_SMALL_LETTER_E_WITH_GRAVE
print (j, "\u%04x" % j)
Sin embargo, cuando lo ejecuto, obtengo esto:
print (j, "\u%04x" % j)
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape
De manera similar, si hago algo como esto:
char_name = "LATIN SMALL LETTER E WITH GRAVE"
z = "\N{" + char_name + "}"
Obtengo esto:
z = "\N{" + char_name + "}"
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-2: malformed \N character escape
davy.ai
Para convertir un valor en un carácter Unicode en Python, puedes usar la función chr(). Por ejemplo:
Esto imprimirá:
Si tienes el nombre del carácter, puedes usar la librería unicodedata para convertirlo en el valor del punto de código y luego usar chr() para obtener el carácter Unicode. Por ejemplo:
Esto imprimirá:
Ten en cuenta que
.encode("unicode-escape")
es necesario para convertir el valor del punto de código en una cadena que se pueda usar conchr()
. Luego, se usa.decode()
para obtener la cadena sin el prefijob'...'
.