Próbuję pracować z bardzo dużym zbiorem danych, który zawiera kilka niestandardowych znaków. Muszę użyć Unicode, zgodnie ze specyfikacją pracy, ale jestem zdziwiony. (I całkiem możliwe, że robię to wszystko źle.)
Otwieram CSV za pomocą:
15 ncesReader = csv.reader(open('geocoded_output.csv', 'rb'), delimiter='\t', quotechar='"')
Następnie próbuję zakodować go za pomocą:
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])
Koduję wszystko oprócz lat i lng, ponieważ muszą one zostać wysłane do API. Kiedy uruchamiam program, aby przeanalizować zestaw danych do tego, czego mogę użyć, otrzymuję następujący 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)
Myślę, że powinienem powiedzieć, że używam Pythona 2.7.2 i jest to część aplikacji zbudowanej na django 1.4. Przeczytałem kilka postów na ten temat, ale żaden z nich nie wydaje się mieć bezpośredniego zastosowania. Każda pomoc będzie bardzo mile widziana.
Możesz również chcieć wiedzieć, że niektóre niestandardowe znaki powodujące problem to Ñ i prawdopodobnie É.