separar - Convierta una cadena Unicode en una cadena en Python(que contiene símbolos adicionales)
python separar string por caracter (8)
¿Cómo convertir una cadena Unicode (que contiene caracteres adicionales como $, etc.) en una cadena Python?
Aquí hay un código de ejemplo
import unicodedata
raw_text = u"here $%6757 dfgdfg"
convert_text = unicodedata.normalize(''NFKD'', raw_text).encode(''ascii'',''ignore'')
Aquí hay un ejemplo:
>>> u = u''€€€''
>>> s = u.encode(''utf8'')
>>> s
''/xe2/x82/xac/xe2/x82/xac/xe2/x82/xac''
Bueno, si está dispuesto / listo para cambiar a Python 3 (lo que puede no deberse a la incompatibilidad hacia atrás con algún código de Python 2), no tiene que hacer 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 sintaxis u''<text>''
. 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 tenga que ver con cómo intenta guardar el texto en un archivo).
Puede usar la codificación a ASCII si no necesita traducir los caracteres que no son ASCII:
>>> a=u"aaaàçççñññ"
>>> type(a)
<type ''unicode''>
>>> a.encode(''ascii'',''ignore'')
''aaa''
>>> a.encode(''ascii'',''replace'')
''aaa???????''
>>>
Si tiene una cadena Unicode y desea escribir esto en un archivo u otra forma serializada, primero debe codificarla en una representación particular que pueda almacenarse. Hay varias codificaciones comunes de Unicode, como UTF-16 (usa dos bytes para la mayoría de los caracteres de 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, puedo usar:
>>> s= u''£10''
>>> s.encode(''utf8'')
''/xc2/x9c10''
>>> s.encode(''utf16'')
''/xff/xfe/x9c/x001/x000/x00''
Esta cadena cruda de bytes se puede escribir en un archivo. Sin embargo, tenga en cuenta que al leerlo de nuevo, debe saber en qué codificación se encuentra y decodificarlo utilizando esa misma codificación.
Al escribir en archivos, puede deshacerse de este proceso de codificación / decodificación manual utilizando el módulo de codecs . Entonces, para abrir un archivo que codifique todas las cadenas Unicode en UTF-8 , use:
import codecs
f = codecs.open(''path/to/file.txt'',''w'',''utf8'')
f.write(my_unicode_string) # Stored on disk as UTF-8
Tenga en cuenta que cualquier otra cosa que esté utilizando estos archivos debe comprender en qué codificación está el archivo si desean leerlos. Si usted es el único que realiza la lectura / escritura, esto no es un problema, de lo contrario, asegúrese de escribir en una forma comprensible por cualquier otra cosa que utilice los archivos.
En Python 3, esta forma de acceso a archivos es la predeterminada, y la función de open
incorporada tomará un parámetro de codificación y siempre se traducirá a / desde cadenas de Unicode (el objeto de cadena predeterminado en Python 3) para archivos abiertos en modo de texto.
>>> text=u''abcd''
>>> str(text)
''abcd''
Si la cadena solo contiene caracteres ascii.
import json, ast
jdata = ast.literal_eval(json.dumps(jdata)) # Removing uni-code chars
title = u"Klüft skräms inför på fédéral électoral große"
import unicodedata
unicodedata.normalize(''NFKD'', title).encode(''ascii'',''ignore'')
''Kluft skrams infor pa federal electoral groe''