Python CSV разделитель изменений

Для учебного проекта у меня есть много много CSV-файлов, которые мне нужно изменить с запятой (,), разделенных точкой с запятой (;). Поэтому мне нужно только изменить разделитель.

Обычно я делаю это в Excel, но это требует много работы. И там мне нужно сделать это для каждого файла отдельно, а Excel занимает много времени, чтобы сделать это.

Я сделал папку ввода и вывода. Это прекрасно работает в коде ниже. Проблема в:

  1. запятая не меняется в точке с запятой.
  2. и по какой-то причине он добавляет пустую строку, я не знаю, почему это происходит.

Может кто-нибудь дать несколько советов?

import csv 
from pathlib import Path

folder_in = Path(r'C:\convert\Trajectory\In') 
folder_out = Path(r'C:\convert\Trajectory\Out')

for incsv in folder_in.iterdir():
    outcsv = folder_out.joinpath(incsv.name)
    with open(str(incsv), 'r') as fin, open(str(outcsv), 'w') as fout:
        reader = csv.DictReader(fin)
        writer = csv.DictWriter(fout, reader.fieldnames, delimiter=';')
        writer.writeheader()
        writer.writerows(reader)

1 ответ

Ответа нет, вот мое предложение для реализации csv через запятую и точку с запятой в том же файле:

path="file_to_convert.csv"

reader = list(csv.reader(open(path, "rU"), delimiter=','))
writer = csv.writer(open(path, 'w'), delimiter=';')
writer.writerows(row for row in reader)

Я использовал list() поэтому содержимое читателя сохраняется, и я снова открываю файл для записи в него.

Если вам не нужно, чтобы изменения были в одном файле, вы можете проверить этот ответ.

Другие вопросы по тегам