Функция Pandas read_csv для обработки проблемы utf-8 и utf-16

Пользователь может загрузить как UTF-8, так и UTF-16 CSV файл, который является файлом посещаемости команд Microsoft, который они загружают оттуда. Чтобы решить эту проблему, я написал следующий код, но возникла какая-то странная проблема, которую я не могу решить

excel_file = request.FILES['excel-file']
try:
    print('try case')
    df = pd.read_csv(excel_file)
    csv_type = 'a'
    print(df)
except UnicodeDecodeError:
    print('except case')
    from io import BytesIO
    df = pd.read_csv(BytesIO(excel_file.read().decode('UTF-16').encode('UTF-8')), sep='\\')
    csv_type = 'b'
    print(df)
except Exception as e:
    print("Incorrect CSV file format", e)

Здесь первый "try case" обрабатывает UTF-8, а "except case" обрабатывает UTF-16 CSV файл. Оба случая работают нормально, если я запускаю их отдельно, но когда я помещаю их в блок try except, код не работает. В приведенном выше коде UTF-8 работает, но UTF-16 выдает ошибку No columns to parse from file. Теперь, если я перенесу код except в try, то UTF-16 будет работать, но он также будет работать для UTF-8, выдавая неверные данные. Так как же мне поступить в этом случае, я не нашел никакого способа получить кодировку файла.

Вернуться на верх