Импорт файла .csv в Python 3 из папки - PullRequest
0 голосов
/ 20 января 2019

Есть 2 CSV-файла в одном месте: 1-андидат.csv 2- Store.csv

Когда я импортирую файл candid.csv при использовании этого кода, он импортируется:

data=pandas.read_csv("C:\\Users\\Nupur\\Desktop\\Ankit\\candidates.csv")

Но когда я использую тот же код для импорта файла Store.csv, он выдает ошибку:

data=pandas.read_csv("C:\\Users\\Nupur\\Desktop\\Ankit\\Store.csv")

Ошибка:

UnicodeDecodeError Traceback (самый последний вызов последний) pandas_libs \ parsers.pyx в pandas._libs.parsers.TextReader._convert_tokens ()

pandas_libs \ parsers.pyx в pandas._libs.parsers.TextReader._convert_with_dtype ()

pandas_libs \ parsers.pyx в pandas._libs.parsers.TextReader._string_convert ()

pandas_libs \ parsers.pyx в pandas._libs.parsers._string_box_utf8 ()

UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xf6 в позиции 9: неверный стартовый байт

Во время обработки вышеуказанного исключения произошло другое исключение:

UnicodeDecodeError Traceback (самый последний вызов последний) в ----> 1 data = pandas.read_csv ("C: \ Users \ Nupur \ Desktop \ Ankit \ Store.csv")

C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ pandas \ io \ parsers.py в parser_f (filepath_or_buffer, sep, разделитель, заголовок, имена, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, преобразователи, true_values, false_values, skipinitialspace, skiprows, nrows, na_values, keep_default_na, na_filter, подробный, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, итератор, размер фрагмента, сжатие, тысячи, десятичное число, переводчик строки, кавычка, цитирование, escape-символ, комментарий, кодировка, диалект, tupleize_cols, error_bad_lines, warn_bad_lines, skipfooter, двойная кавычка, delim_whitespace, low_memory, memory_map, float_precision) 676 skip_blank_lines = skip_blank_lines) 677 -> 678 вернуть _read (filepath_or_buffer, kwds) +679 680 parser_f. имя = имя

C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ pandas \ io \ parsers.py в _read (filepath_or_buffer, kwds) 444 445 попыток: -> 446 data = parser.read (nrows) 447 наконец: 448 parser.close ()

C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ pandas \ io \ parsers.py в read (self, nrows) 1034 поднять ValueError ('skipfooter не поддерживается для итерации ') 1035 -> 1036 ret = self._engine.read (nrows) 1037 1038 # Может изменять столбцы / col_dict

C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ pandas \ io \ parsers.py в читать (self, nrows) 1846 def читать (self, nrows = None): 1847
пытаться: -> 1848 data = self._reader.read (nrows) 1849, кроме StopItered: 1850, если self._first_chunk:

pandas_libs \ parsers.pyx в pandas._libs.parsers.TextReader.read ()

pandas_libs \ parsers.pyx в pandas._libs.parsers.TextReader._read_low_memory ()

pandas_libs \ parsers.pyx в pandas._libs.parsers.TextReader._read_rows ()

pandas_libs \ parsers.pyx в pandas._libs.parsers.TextReader._convert_column_data ()

pandas_libs \ parsers.pyx в pandas._libs.parsers.TextReader._convert_tokens ()

pandas_libs \ parsers.pyx в pandas._libs.parsers.TextReader._convert_with_dtype ()

pandas_libs \ parsers.pyx в pandas._libs.parsers.TextReader._string_convert ()

pandas_libs \ parsers.pyx в pandas._libs.parsers._string_box_utf8 ()

UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xf6 в позиции 9: неверный стартовый байт

Ответы [ 3 ]

0 голосов
/ 20 января 2019

Если вы столкнулись с ошибкой кодирования из-за того, что кодировка вашего файла не является настройкой по умолчанию, как указано в pd.read_csv() документах, вы можете найти кодировку файла, сначала установив chardet, а затем следующий код:

import chardet    
rawdata = open('D:\\path\\file.csv', 'rb').read()
result = chardet.detect(rawdata)
charenc = result['encoding']
print(charenc)

Это даст вам кодировку файла.

Если у вас есть кодировка, вы можете читать как:

pd.read_csv('D:\\path\\file.csv',encoding = 'encoding you found')

или

pd.read_csv(r'D:\path\file.csv',encoding = 'encoding you found')

Вы получите список всех кодировок здесь

Надеюсь, вы найдете это полезным.

0 голосов
/ 20 января 2019

Вы пробовали:

data=pandas.read_csv("C:\\Users\\Nupur\\Desktop\\Ankit\\Store.csv", encoding='utf-8')

Если приведенное выше не работает, то, возможно, у вас другой формат кодирования, я бы предложил выбрать несколько кодировок для Windows, например encoding='iso-8859-1', encoding='cp1252' или encoding='latin1'.

ИЛИ попробуйте добавить r перед именем файла, чтобы оно считалось "raw string", чтобы обратные слеши не обрабатывались специально:

data=pandas.read_csv(r"C:\\Users\\Nupur\\Desktop\\Ankit\\Store.csv", encoding='cp1252')
0 голосов
/ 20 января 2019

Попробуйте использовать это,

data=pandas.read_csv("C:\\Users\\Nupur\\Desktop\\Ankit\\Store.csv",encoding = "ISO-8859-1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...