以下图为例进行测试

 

 

# 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'}]