Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import csv
from typing import List
class CsvHandler:
@staticmethod
def __removeInitSpace__(word: str) -> str:
"""
Removes space at index 0 if present
"""
if word.startswith(" "):
return word[1:]
else:
return word
@staticmethod
def load(filepath: str) -> (List[str], List[dict]):
"""
Loads csv file
:param filepath: path to csv file
:return: tuple of (list of header params, list of dict in format: {header1: value1, header2: value2,...})
"""
item_list = []
with open(filepath, 'r') as csvFile:
header = csvFile.readline().split(",")
for i in range(1, len(header)):
header[i] = CsvHandler.__removeInitSpace__(header[i])
reader = csv.reader(csvFile)
for row in reader:
for i in range(1, len(row)):
row[i] = CsvHandler.__removeInitSpace__(row[i])
dic = {}
for i in range(1, len(header)):
dic[header[i]] = row[i]
item_list.append(dic)
csvFile.close()
return header, item_list
@staticmethod
def save(filepath: str, header: list, csv_as_list_dic: List[dict]) -> None:
"""
Saves csv file into disk
:param filepath: path to save csv file (with filename)
:param header: header to save into file
:param csv_as_list_dic: list of dic in format {header1: value1, header2: value2,...}
:return: None
"""
with open(filepath, 'w') as csvFile:
header_line = ""
for headerItem in header:
header_line += headerItem + ","
header_line = header_line[0:len(header_line) - 1]
csvFile.write(header_line + "\n")
for row in csv_as_list_dic:
line = ""
for headerItem in header:
line = line + row[headerItem] + ","
line = line[0:len(line) - 1]
csvFile.write(line + "\n")
csvFile.close()