I am running the following code:-
import csv
import sys
from collections import OrderedDict
file_name='sample.txt'
with open(file_name,'rb') as f:
reader = csv.reader(f)
headers = reader.next()
p=[]
for row in reader:
row[0] = row[0].zfill(6)
row[2] = row[2].zfill(6)
row[3] = row[3].zfill(6)
row[4] = row[4].zfill(6)
row[1] = row[1][5:7] + "-" + row[1][8:10] + "-" + row[1][:4]
p.append(row[:5])
print p
with open('sample_out.txt', 'wb') as ofile:
header = ['User_ID','Date','Num_1','Num_2','Com_ID']
extra_headers = sys.argv
header.extend(sys.argv[1:])
n = len(sys.argv)
writer = csv.DictWriter(ofile, fieldnames=header)
writer.writeheader()
col_fill = ''
writer.writerows({col: row_item} for row in p for row_item,col in zip(row+[col_fill]*n,header))
I am passing the column names from command line e.g. python script.py BOL1 BOL2 This is the output file:--
User_ID,Date,Num_1,Num_2,Com_ID,BOL1,BOL1
000101,,,,,,
,04-13-2015,,,,,
,,000012,,,,
,,,000021,,,
,,,,001011,,
,,,,,,
,,,,,,
How do I remove extra commas and make it readable.
You're writing rows containing only one column. Simply look at what's inside the braces. Perhaps you meant to use something like:
to generate dictionaries with the information from each row. Since we don't need to pad the dictionary with empty columns, and dict accepts an iterable of key,value pairs, this could be written as: