以下图为例进行测试
# coding = utf-8s import csv from loguru import logger #将一个有序的字符串转化成一个list def str_split(list_param): str = list_param[0] return str.split(',') def req_data_list(csv_uri): #读取csv文件,并将第一行作为key值,后面的行作为value值,转化为一个dict的列表 with open(csv_uri, newline='') as csvfile: spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|') #将读取的csv文件转化成一个list列表 csv_list = list(spamreader) logger.info(csv_list) #获取第一行的数据,并将第一行转化成一个list,由于这么功能需要复用,因此设计为一个函数方便后面调用 # csv_list[0]此时为一个list,这个list只有一个包含所有csv列的字符串,需要对字符串进行分割成一个list key_list = str_split(csv_list[0]) dict_list = [] #从csv_list的第二行开始循环,并将值赋值给dict的value,然后形成一个dict的list for value in range(1,len(csv_list)): csv_dict = {} csv_List = str_split(csv_list[value]) for item in range (0,len(key_list)): csv_dict[key_list[item]] = csv_List[item] dict_list.append(csv_dict) logger.info(dict_list) return dict_list req_data_list('abcd.csv')
执行结果如下:
2022-04-28 14:31:03.442 | INFO | __main__:req_data_list:19 - [['a,b,c,d'], ['1,2,3,4']] 2022-04-28 14:31:03.442 | INFO | __main__:req_data_list:31 - [{'a': '1', 'b': '2', 'c': '3', 'd': '4'}]