Janelle Koh Hui Juan
Janelle Koh Hui Juan

Reputation: 91

Save CSV file using python

I am able to change the data to lowercase and remove all the punctuation but I have trouble saving the corrected data in CSV file.

import csv
import re
import os

input_file=raw_input("Name of the CSV file:")
output_file=raw_input("Output Name:")


reg_test=input_file
result = ''

with open(input_file,'r') as csvfile:
  with open(output_file,'w') as csv_out_file:
  filereader = csv.reader(csvfile)
  filewriter =csv.writer(csv_out_file)
  for row in filereader:
     row = re.sub('[^A-Za-z0-9]+', '', str(row))
     result += row + ','

lower = (result).lower()
csvfile.close()
csv_out_file.close()

Upvotes: 2

Views: 113

Answers (1)

bastelflp
bastelflp

Reputation: 10106

You do not have to close the files, this is done automatically after the context of the with statement is over and you have to actually write something after you create the csv.writer, e.g. with writerow:

import csv
import re

input_file = 'in.csv'
output_file = 'out.csv'

with open(input_file, 'r') as csvfile, open(output_file, 'w') as csv_out_file:
    filereader = csv.reader(csvfile)
    filewriter = csv.writer(csv_out_file)
    for row in filereader:
        new_row = re.sub('[^A-Za-z0-9]+', '', str(row))  # manipulate the row
        filewriter.writerow([new_row.lower()])  # write the new row to the out file

# the files are closed automatically after the context of the with statement is over

This saves the manipulated content of the first csv file to the second.

Upvotes: 2

Related Questions