44import csv
55import gzip
66
7- def parse_csv (source , select = None , types = None , has_headers = True , delimiter = ',' , silence_errors = True ):
7+ def parse_csv (source , select = None , types = None , has_headers = True , delimiter = ',' , silence_errors = False ):
88 '''
99 Parse an iterable source into a list of records.
1010 Returns a list of dictionaries if has_headers is True, otherwise returns a list of tuples.
@@ -37,6 +37,7 @@ def parse_csv(source, select=None, types=None, has_headers=True, delimiter=',',
3737 for rownum , row in enumerate (rows , start = start ):
3838
3939 if not row : # Skip rows with no data
40+ print (f'Row { rownum } : Empty row' )
4041 continue
4142 try :
4243 # Filter the row if specific columns were selected
@@ -46,11 +47,12 @@ def parse_csv(source, select=None, types=None, has_headers=True, delimiter=',',
4647 # Convert types if a list of types is provided
4748 if types :
4849 row = [func (val ) for func , val in zip (types , row ) ]
50+ print (f'Row { rownum } : Converted row: { row } ' )
4951
5052 except ValueError as e :
5153 if not silence_errors :
5254 print (f"Row { rownum } : Could not convert: { row } " )
53- print (f"Row { rownum } : Reason: { e } \n " )
55+ print (f"Row { rownum } : Reason: { e } " )
5456 continue
5557
5658 # print(list(zip(headers, row)))
@@ -64,10 +66,10 @@ def parse_csv(source, select=None, types=None, has_headers=True, delimiter=',',
6466
6567
6668
67- # with open('.\\Data\\portfolio .csv') as f:
68- # d = parse_csv(f, types=[str, int, float])
69+ with open ('.\\ Data\\ missing .csv' ) as f :
70+ d = parse_csv (f , types = [str , int , float ])
6971
70- # print(d)
72+ print (d )
7173
7274
7375
@@ -82,23 +84,3 @@ def parse_csv(source, select=None, types=None, has_headers=True, delimiter=',',
8284# pf = parse_csv(lines, types=[str,int,float])
8385# print(pf)
8486
85-
86-
87-
88- # portfolio = parse_csv('.\\Data\\portfolio.csv', select=['name','shares'], types=[str, int])
89- # print(portfolio)
90-
91- # portfolio = parse_csv('.\\Data\\portfolio.csv', types=[str, int, float])
92- # print(portfolio)
93-
94- # prices = parse_csv('.\\Data\\prices.csv', types=[str,float], has_headers=False)
95- # print(prices)
96-
97- # portfolio = parse_csv('.\\Data\\portfolio.dat', types=[str, int, float], delimiter=' ')
98- # print(portfolio)
99-
100- # portfolio = parse_csv('.\\Data\\portfolio.csv', select=['name','shares'], types=[str, int], has_headers=False)
101- # print(portfolio)
102-
103- # portfolio = parse_csv('.\\Data\\missing.csv', types=[str, int, float], silence_errors=False)
104- # print(portfolio)
0 commit comments