#python #encoding #chardet
Вопрос:
Я загружаю данные с помощью CSV-файлов в свою базу данных my postgres через AWS, и я сталкиваюсь с некоторыми проблемами, из-за которых некоторые данные не находятся в формате UTF-8. Я хочу определить, какие строки в моих данных вызывают проблему, чтобы я мог обратиться к источнику.
Я пытался использовать chardet, чтобы дать мне то, что мне нужно, но, похоже, не могу заставить его выводить тип кодировки строка за строкой. Я также попытался использовать приведенное ниже, которое, подобно chardet, сообщит мне, является ли весь файл определенной кодировкой или нет, но не то, какие строки вызывают проблему
import codecs #PYTHON encodings = ['utf-8','windows-1250', 'windows-1252'] # add more for e in encodings: try: fh = codecs.open('filename.csv', 'r', encoding=e) fh.readlines() fh.seek(0) except UnicodeDecodeError: print('got unicode error with %s , trying different encoding' % e) else: print('opening the file with encoding: %s ' % e) break
любая помощь будет признательна!
Пример текста, вызывающего проблему ниже:
Aĺi Hùssaini Buķar Falmatàmi Mohammad Bùlama Mùstapaha Maiďugu Shu"ibu Aĺi Àdamu Ja"o Khaìcalla Makanikì Alì Mòhammad Zaŕami Dànkabo Kelĺumi Umàra Goŕoma Gaptomì Àli Àhmed Àbdullahi Shafi"u Mohammed! Hassañ Aùwal Usaìni Mohàmmed Goniķaka Abdullé ÑGABGL17401598 MUSA ĶAUMI NGAMCH17051ĺ535 NGBOJEGB1708ààaaÅQààp NGYOGJBY3215` NGBOJEAG1709Ź ÙNGBOKD1T17090240 ÑGBOMDMK17100381 ÑGBOMDMK17100382 ÑGBOMDMK17100383 ÑGBOMDMK17100384 ÑGBOMDMK17100385 ÑGBOMDMK17100387 ÑGBOMDMK17100388 ÑGBOMDMK17100389 ÑGBOMDMK17100390 ÑGBOMDMK17100392 ÑGBOMDMK17100393 ÑGBOMDMK17100394 ÑGBOMDMK17100395 ÑGBOMDMK17100396 ÑGBOMDMK17100397 ÑGBOMDMK17100398 ÑGBOMDMK17100399 ÑGBOMDMK17100400 ÑGBOMDMK17100401 ÑGBOMDMK17100402 ÑGBOMDMK17100403 ÑGBOMDMK17100419 Yyģggghyuuiiiuyttttrrrrrrŕ NĢBÒJEGM17100245 NĢBÒJEGM17100479 NĢBÒJEGM17100493 NĢBÒJEGM17100495 NĢBÒJEGM17100524 NĢBÒJEGM17100525 ÑGYOGJGJ122112 ÑGYOYFKG3824 Ngyoýfmy4736 NGBOJEFC1804aaà NGBOJEFC1804à8131 NGYÒGDAKW0717 NGYÒGDAK20609 NGBÒMMST19056545 NGBOMDNY88J00233!! ÀNGYOGDAK21907436 NGBODAAC19110390]
Комментарии:
1. у вас разные кодировки внутри одного csv? не могли бы вы предоставить несколько образцов?
2. Данные являются извлечением из системы, которая, по-видимому, допускает несколько кодировок. У меня нет контроля над этой системой. мне отправляются файлы с этими несколькими кодировками, и я хотел бы идентифицировать те, которые не являются UTF-8. Примером типа символа, вызывающего проблему, является забавно выглядящая одинарная кавычка — в скобках ( ` )
3. обратная стрелка-это символ ascii… образец, который я имел в виду, был просто небольшим csv-файлом с разной кодировкой в каждой строке
4. Этот символ ( ` ) определенно вызывает проблему. Я изолировал этот, но мне нужно изолировать другие, которые вызывают проблемы. Прилагается образец некоторых из предполагаемых символов — не все они будут не UTF-8, но некоторые из них есть.