import csv def parse_csv_to_dict(csv_file_path): """ Parses a CSV file into a dictionary. Parameters: - csv_file_path (str): The path to the CSV file. Returns: - dict: A dictionary representation of the CSV file. """ parsed_dict = {} with open(csv_file_path, mode='r', newline='', encoding='utf-8') as csvfile: reader = csv.reader(csvfile) for row in reader: if len(row) < 2: continue # Skip rows that do not have at least two columns name = row[0].strip() if name not in parsed_dict: parsed_dict[name] = {} index = 1 while index < len(row): field_type = row[index].strip() if len(row) > index else None #print(field_type, end=" ") if not field_type: break # End of relevant columns for this row if field_type in ('KEY:', 'PARAM:') and len(row) > index + 2: key_or_param_name = row[index + 1].strip() key_or_param_value = row[index + 2].strip() if field_type == 'KEY:': if 'KEY' not in parsed_dict[name]: parsed_dict[name]['KEY'] = {} parsed_dict[name]['KEY'][key_or_param_name] = key_or_param_value elif field_type == 'PARAM:': if 'PARAM' not in parsed_dict[name]: parsed_dict[name]['PARAM'] = {} parsed_dict[name]['PARAM'][key_or_param_name] = key_or_param_value index += 3 #print("") # If no valid field_type was found, set the entry to None if name not in parsed_dict: parsed_dict[name] = None return parsed_dict if __name__ == "__main__": csv_file_path = 'apidetails.csv' result = parse_csv_to_dict(csv_file_path) print(result)