Как перевести файл csv из 1251 в utf-8

Писал код который из нескольких csv файлов выводил данные в терминал, но один из шести csv файлов оказался 1251 а не utf-8, изменить кодировку через блокнот у меня не получается тк файл слишком велик, подскажите способ как можно изменить кодировку или вместить в цикл изменение кодировки Яп python если что


Ответы (1 шт):

Автор решения: Aidar

Если вам нужно изменить кодировку csv файлов при чтении в Python, вы можете воспользоваться модулем chardet для определения текущей кодировки каждого файла, а затем использовать модуль csv для чтения,конвертирования и записи данных в требуемую кодировку.

Ниже приведен пример кода, который демонстрирует этот подход:

import csv
import chardet

# Список csv файлов для чтения
csv_files = ["file1.csv", "file2.csv", "file3.csv"]

# Цикл для обработки каждого файла
for file_path in csv_files:
    # Определение текущей кодировки файла
    with open(file_path, 'rb') as f:
        raw_data = f.read()
        encoding = chardet.detect(raw_data)['encoding']
    
    # Чтение данных из файла и конвертирование в требуемую кодировку (utf-8)
    with open(file_path, 'r', encoding=encoding) as f:
        reader = csv.reader(f)
        for row in reader:
            # Ваши действия с данными, например, вывод в терминал
            print(row)
            
    # Опционально: запись данных в новый файл с требуемой кодировкой
    # with open("new_" + file_path, 'w', encoding='utf-8') as f:
    #     writer = csv.writer(f)
    #     for row in reader:
    #         # Ваши действия с данными, например, запись в новый файл
    #         writer.writerow(row)

В этом примере сначала определяется текущая кодировка каждого файла с помощью модуля chardet, затем данные считываются из каждого файла и преобразуются в требуемую кодировку с использованием модуля csv. Данные могут быть обработаны или записаны в новый файл с требуемой кодировкой, если это необходимо.

→ Ссылка