Estoy intentando trabajar con un conjunto de datos muy grande que tiene algunos caracteres no estándar. Necesito usar Unicode, según las especificaciones del trabajo, pero estoy desconcertado. (Y muy posiblemente haciendo todo mal.)UnicodeDecodeError: el códec 'ascii' no puede decodificar el byte 0xd1 en la posición 2: ordinal no está dentro del rango (128)
que abrir el CSV usando:
15 ncesReader = csv.reader(open('geocoded_output.csv', 'rb'), delimiter='\t', quotechar='"')
Entonces, intento para codificar con:
name=school_name.encode('utf-8'), street=row[9].encode('utf-8'), city=row[10].encode('utf-8'), state=row[11].encode('utf-8'), zip5=row[12], zip4=row[13],county=row[25].encode('utf-8'), lat=row[22], lng=row[23])
estoy codificación de todo, excepto la lat y lng porque deben enviarse a una API. Cuando ejecuto el programa para analizar el conjunto de datos en lo que puedo usar, obtengo el siguiente Traceback.
Traceback (most recent call last):
File "push_into_db.py", line 80, in <module>
main()
File "push_into_db.py", line 74, in main
district_map = buildDistrictSchoolMap()
File "push_into_db.py", line 32, in buildDistrictSchoolMap
county=row[25].encode('utf-8'), lat=row[22], lng=row[23])
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 2: ordinal not in range(128)
creo que debo decirle que estoy usando Python 2.7.2, y esto es parte de una aplicación a construir en Django 1.4. He leído varias publicaciones sobre este tema, pero ninguna de ellas parece aplicarse directamente. Cualquier ayuda será apreciada.
Es posible que también desee saber que algunos de los caracteres no estándar que causan el problema son Ñ y posiblemente É.
¿Cuál es su codificación archivo original? Creo que debes decodificarlo de acuerdo con la codificación original y luego convertir a utf 8 –
posible duplicado de [Codificación da "codec 'ascii' no puede codificar el carácter ... ordinal no en rango (128)"] (http: // stackoverflow .com/questions/2513027/encoding-gives-ascii-codec-cant-encode-character-ordinal-not-in-range128) [Ed .: y de aproximadamente un billón de otros, también, estoy seguro.] –