==== Read a CSV file to JSON, using the first rows as field names definition ==== \\ If you just want to **create your own code** from scratch, with the very **basic .csv reading code**, this is the snippet you need: def read_csv_data(fname): with open(fname) as csvfile: reader = csv.reader(csvfile, delimiter=',') for row in reader: print(row) \\ In case we want to **read a .csv** file on python (3), and **get a JSON** (dictionary on python) with the **first row defining the field names** of each item, we can use this code snippet: import csv import re def read_csv_data(fname): # open the csv file and create a reader with open(fname) as csvfile: reader = csv.reader(csvfile, delimiter=',') first = True fields = [] data = [] # iterate all rows on the csv for row in reader: # if dealing with first row, append each cell as fields if first: for field in row: # replace everything that is not the # and also convert the field to lowercase fields.append(re.sub(r'[^\w\.\-]+', '_', field.lower())) first = False else: i = 0 item = {} # process an actual item on the list for cell in row: try: item[fields[i]] = cell except IndexError: pass i += 1 data.append(item) return data return []