Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change the separator used in a CSV file?

Tags:

python

csv

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:

  1. the comma is not getting changed in a semicolon.
  2. 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)
like image 457
Bjorn ten Broeke Avatar asked Oct 28 '25 07:10

Bjorn ten Broeke


1 Answers

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.

like image 148
Sylhare Avatar answered Oct 31 '25 11:10

Sylhare



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!