For a study project I have many many csv files that I need to change from comma (,) separated to semicolon (;) separated. So I only need to change the separator.
I normally do it in Excel, but that takes a lot of work. And there I need to do it for every file separately plus Excel take a lot of time to do it.
I have made a input and output folder.
That works fine in the code below.
The problem is:
the comma is not getting changed in a semicolon.
and for some reason it is adding a blank line, I don’t know why it does that.
Can somebody give some tips?
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)
解决方案
There are no answer, here is my proposition for a csv comma to semicolon implementation on the same file:
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)
I used the list() so the content of reader is kept and I reopen the file to write in it.
If you don't need the change to be in the same file you can check this answer.