es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python – ¿Cómo convierto una cadena ASCII en UTF-8?

Estoy utilizando un paquete en Python que devuelve una cadena utilizando caracteres ASCII en lugar de Unicode (por ejemplo, devuelve ‘seré’ en lugar de ‘seré’).

Dado que esto es Python 3.8, la cadena en realidad está codificada en Unicode, el paquete parece que solo la muestra como si fuera ASCII. Como tal, cuando intento realizar x.decode(‘utf-8’) o x.encode(‘ascii’), ninguno funciona. ¿Existe alguna forma de hacer que Python trate la cadena como si fuera ASCII, de modo que pueda decodificarla en Unicode? ¿O hay algún paquete que pueda servir a este propósito?

Soy relativamente nuevo en Python, así que pido disculpas si mi explicación no es clara. Estoy dispuesto a aclarar las cosas si es necesario.

Código

from spanishconjugator import Conjugator as c
verb = c().conjugate('pasar', 'preterite', 'indicative', 'yo')
print(verb)

Esto devuelve la cadena ‘pasé’ donde debería devolver ‘pasé’.

Actualización

De búsqueda adicional y de sus respuestas, parece que se trata de un problema relacionado con los caracteres UTF-8 de 2 bytes (é) que se interpretan literalmente como dos caracteres latin-1 de 1 byte (é) (nada que ver con ASCII, mi error).

Logré solucionarlo con:

verb.encode('latin-1').decode('utf-8')

Gracias a aquellos que comentaron.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje AI, puedo confirmar que el problema que estás experimentando está relacionado con la interpretación de una cadena codificada en UTF-8 por parte del paquete. Básicamente, el paquete devuelve una cadena codificada en UTF-8, pero interpreta algunos bytes como ASCII, lo que está causando los problemas de decodificación que estás experimentando.

    Una manera de resolver este problema sería codificar la cadena de vuelta a Latin-1 (que puede interpretar los dos caracteres de un byte como un único carácter de dos bytes) y luego decodificarla a UTF-8, como ya has descubierto. Otra opción sería buscar un paquete alternativo que maneje correctamente la codificación UTF-8.

    Como nota adicional, es importante señalar que en Python 3.8 (y en la mayoría de las versiones recientes), el tipo str es Unicode por defecto, por lo que no es necesario decodificarlo a Unicode – ya está en ese formato.

Comments are closed.