Estoy tratando de decodificar una cadena que tomé de archivo:pitón: problema Unicode
file = open ("./Downloads/lamp-post.csv", 'r')
data = file.readlines()
data[0]
'\ xff \ xfeK \ x00e \ x00y \ x00w \ x00o \ x00r \ x00d \ x00 \ t \ x00C \ x00o \ x00m \ x00p \ x00e \ x00t \ x00i \ x00t \ x00i \ x00o \ x00n \ x00 \ t \ x00G \ x00l \ x00o \ x00b \ x00a \ x00l \ x00 \ x00M \ x00o \ x00n \ x00t \ x00h \ x00l \ x00y \ x00 \ x00S \ x00e \ x00a \ x00r \ x00c \ x00h \ x00e \ x00s \ x00 \ t \ x00D \ x00e \ x00c \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00N \ x00o \ x00v \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00O \ x00c \ x00t \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00S \ x00e \ x00p \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00A \ x00u \ x00g \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00J \ x00u \ x00l \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00J \ x00u \ x00n \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00M \ x00a \ x00y \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00A \ x00p \ x00r \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00M \ x00a \ x00r \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00F \ x00e \ x00b \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00J \ x00a \ x00n \ x00 \ x002 \ x000 \ x001 \ x000 \ x00 \ t \ x00A \ x00d \ x00 \ x00s \ x00h \ x00a \ x00r \ x00e \ x00 \ t \ x00e \ x00e \ x00a \ x00r \ x00c \ x00h \ x00 \ x00s \ x00h \ x00a \ x00r \ x00e \ x00 \ t \ x00E \ x00s \ x00t \ x00i \ x00m \ x00a \ x00t \ x00e \ x00d \ x00 \ x00A \ x00v \ x00g \ x00. \ x00 \ x00C \ x00P \ x00C \ x00 \ t \ x 00E \ x00x \ x00t \ x00r \ x00a \ x00c \ x00t \ x00e \ x00d \ x00 \ x00F \ x00r \ x00o \ x00m \ x00 \ x00W \ x00e \ x00b \ x00 \ x00P \ x00a \ x00g \ x00e \ x00 \ t \ x00L \ x00o \ x00c \ x00a \ x00l \ x00 \ x00M \ x00o \ x00n \ x00t \ x00h \ x00l \ x00y \ x00 \ x00S \ x00e \ x00a \ x00r \ x00c \ x00h \ x00e \ x00s \ x00 \ n '
Adición de ignorar realmente no ayuda ...:
En [69]: los datos [2] de salida [69]: u' \ u6700 \ u6100 \ U7200 \ u6400 \ u6500 \ u6e00 \ u2000 \ u6c00 \ u6100 \ u6d00 \ u7000 \ u2000 \ u7000 \ u6f00 \ u7300 \ u7400 \ u0900 \ u3000 \ u2e00 \ u3900 \ u3400 \ u0900 \ u3800 \ u3800 \ u3000 \ u0900 \ u2d00 \ u0900 \ u3300 \ u3200 \ u0000 \ u0000 \ u0000 \ u3900 \ u0000 \ u0000 \ u0000 \ u3900 \ u0000 \ u000000 u0000 \ u3400 \ u3800 \ u3000 \ u0900 \ u3500 \ u3900 \ u00300 u009 \ u3500 \ u3900 \ u0000 \ u0000 \ u3700 \ u3200 \ u0000 \ u0000 \ u3700 \ u3200 \ u000000 u0000 \ u0000 \ u3900 \ u000000 u009 \ u00300 u0000 \ u00300 u0000 \ u0000 \ u3200 \ u3600 \ u000000 u0000 \ u2d00 \ u0900 \ u2d00 \ u0900 \ UA300 \ U3200 \ u2e00 \ U3100 \ u3800 \ u0900 \ u2d00 \ u0900 \ U3400 \ u3800 \ u3000 \ u0a00'
En [70]: datos [2] .decode ("UTF-8", "reemplazar") -------------------------------------------- ------------------------------- Traza (última llamada más reciente)
/Usuarios/oleg/en ()
/opt/local/lib/python2.5/encodings/utf_8.py en decode (entrada, errores) 15 decodificar def (entrada, 'estrictas' errors =): ---> 16 codecs de retorno .utf_8_decode (entrada, errores, True) 18 clase IncrementalEncoder (codecs.IncrementalEncoder):
: codec 'ascii' no puede codificar caracteres en la posición 0-87: no ordinal en gama (128)
En [71]:
Mi respuesta funciona sin el error. Pero depende de si desea ignorar o reemplazar los caracteres no codificados. – orlp