¿Cómo se convierte una cadena Unicode (que contiene caracteres adicionales como £ $, etc.) en una cadena Python?
python
string
unicode
type-conversion
williamtroup
fuente
fuente
print type(unicode_string), repr(unicode_string)
Python 3.x:print type(unicode_string), ascii(unicode_string)
Luego edite su pregunta y copie / pegue los resultados de la declaración de impresión anterior. NO vuelva a escribir los resultados. También busque cerca de la parte superior de su HTML y vea si puede encontrar algo como esto: <meta http-equiv = "Content-Type" content = "text / html; charset = iso-8859unicode_string = u"I'm unicode string"; bytestring = unicode_string.encode('utf-8'); unicode_again = bytestring.decode('utf-8')
Respuestas:
Ver
unicodedata.normalize
fuente
unicode
cadena en astr
es soltar o convertir los caracteres que no se pueden representar en ASCII. Entonces +1 de mi parte.type(title) == unicode and type(title.encode('utf-8')) == str
. No es necesario corromper la entrada para obtener una cadena de bytes que se pueda guardar en un archivo.Puede usar la codificación a ASCII si no necesita traducir los caracteres que no son ASCII:
fuente
ignore
vsreplace
a.encode('ascii', 'xmlcharrefreplace')
da'aaaàçççñññ'
.type(a)
estástr
en Python 3.6.8 y no tiene ningúnencode()
método.Si la cadena solo contiene caracteres ascii.
fuente
Si tiene una cadena Unicode y desea escribirla en un archivo u otra forma serializada, primero debe codificarla en una representación particular que pueda almacenarse. Hay varias codificaciones Unicode comunes, como UTF-16 (usa dos bytes para la mayoría de los caracteres Unicode) o UTF-8 (1-4 bytes / punto de código según el carácter), etc. Para convertir esa cadena en una codificación particular, usted puedo usar:
Esta cadena de bytes sin procesar se puede escribir en un archivo. Sin embargo, tenga en cuenta que al volver a leerlo, debe saber en qué codificación se encuentra y decodificarlo utilizando esa misma codificación.
Al escribir en archivos, puede deshacerse de este proceso manual de codificación / decodificación utilizando el módulo de códecs . Entonces, para abrir un archivo que codifica todas las cadenas Unicode en UTF-8 , use:
Tenga en cuenta que cualquier otra cosa que use estos archivos debe comprender en qué codificación está el archivo si desea leerlos. Si usted es el único que hace la lectura / escritura, esto no es un problema, de lo contrario, asegúrese de escribir de forma comprensible para cualquier otra persona que use los archivos.
En Python 3, esta forma de acceso a archivos es la predeterminada, y la
open
función incorporada tomará un parámetro de codificación y siempre se traducirá a / desde cadenas Unicode (el objeto de cadena predeterminado en Python 3) para los archivos abiertos en modo de texto.fuente
Aquí hay un ejemplo:
fuente
utf8
como se muestra aquí, el resultado son solo signos de interrogación? Aquí hay una imagen de mi Python, versión 2.7.13. (Puedo codificar otros objetos Unicode comou"Klüft"
, ¿pero no los Euros?)Bueno, si está dispuesto / listo para cambiar a Python 3 (lo que puede no ser debido a la incompatibilidad hacia atrás con algún código de Python 2), no tiene que realizar ninguna conversión; todo el texto en Python 3 se representa con cadenas Unicode, lo que también significa que no hay más uso de la
u'<text>'
sintaxis. También tiene lo que son, en efecto, cadenas de bytes, que se utilizan para representar datos (que pueden ser una cadena codificada).http://docs.python.org/3.1/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit
(Por supuesto, si actualmente está usando Python 3, entonces el problema probablemente esté relacionado con la forma en que intenta guardar el texto en un archivo).
fuente
Aquí hay un código de ejemplo
fuente
el archivo contiene una cadena unicode-esaped
para mi
fuente
result.encode().decode('unicode-escape')
Ninguna respuesta funcionó para mi caso, donde tenía una variable de cadena que contenía caracteres unicode, y ninguna codificación-decodificación explicada aquí hizo el trabajo.
Si lo hago en una terminal
o
La salida es correcta:
Pero trabajar con scripts que cargan esta variable de cadena no funcionó.
Esto es lo que funcionó en mi caso , en caso de que ayude a alguien:
fuente