Как перевести файл csv из 1251 в utf-8
Писал код который из нескольких csv файлов выводил данные в терминал, но один из шести csv файлов оказался 1251 а не utf-8, изменить кодировку через блокнот у меня не получается тк файл слишком велик, подскажите способ как можно изменить кодировку или вместить в цикл изменение кодировки Яп python если что
Ответы (1 шт):
Если вам нужно изменить кодировку 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. Данные могут быть обработаны или записаны в новый файл с требуемой кодировкой, если это необходимо.