#django #pandas
#django #pandas
Вопрос:
В моих представлениях Django определено следующее представление:-
def csv_file_upload(request):
if request.method == "POST" and request.FILES['file_upload']:
registry = request.POST.get('reg_select').lower()
csv_file = request.FILES['file_upload']
data = pd.read_csv(csv_file, delimiter="||")
print(data.head())
return render(request, "csv_file_upload.html", {})
Но часть pd.read_csv выдает мне эту ошибку:-
cannot use a string pattern on a bytes-like object
Образец csv-файла, который у меня есть, выглядит следующим образом:
Col_A||Col_B||Col_C
A0||B0||C0
A1||B1||C1
Тот же файл, который я могу прочитать, используя pd.read_csv()
без использования Django, и не получаю эту ошибку.
Почему эта ошибка возникает при использовании Django?
Ответ №1:
Файлы загружаются в виде байтов, а не в виде строки (ожидаемо)
Вы должны прочитать файл и расшифровать его содержимое в строку
csv_bytes = request.FILES['file_upload'].read()
csv_text = csv_bytes.decode('utf-8')
string_buffer = io.StringIO(csv_text)
data = pd.read_csv(string_buffer , delimiter="||")