csv文件的读取:
1)通过列表下标读取:
import csv with open(\'stock.csv\',\'r\') as fp: # reader是个迭代器 reader = csv.reader(fp) next(reader) for i in reader: # print(i) name = i[3] volumn = i[-1] print({\'name\':name,\'volumn\':volumn})
直接用 open() 函数打开 csv 文件。使用csv.reader() 方法,其中参数为指针。因为该 csv 文件有表头,使用可以使用 next() 函数直接跳过第一组数据,即表头数据。然后直接通过列表下标获取想要的数据。
2)通过key获取:
import csv with open(\'stock.csv\',\'r\') as fp: reader = csv.DictReader(fp) for i in reader: value = {"name":i[\'secShortName\'],"volumn":i[\'turnoverVol\']} print(value)
使用DictReader创建reader对象,不会包含表头那行的数据,而reader这个迭代器与reader创建的又不一样,遍历这个迭代器,返回来的是一个字典,不是列表。
csv文件的写入:
1)使用 writer 创建对象,writerow(s) 写入:
import csv headers = [\'username\',\'age\',\'height\'] value = [ (\'张三\',18,180), (\'李四\',19,175), (\'王五\',20,170) ] with open("classroom.csv",\'w\',encoding=\'utf-8\',newline=\'\') as fp: writer = csv.writer(fp) writer.writerow(headers) writer.writerows(value)
写入数据到 csv 文件,需要创建一个 writer 对象,才可以使用 writerow 写入一行,而 writerows 是全部写入。其中 默认下 newline=‘\n’ 即写入一行就会换行,所以需要改成空,数据都是存放在列表中。
2)使用 DictWriter 创建对象,writerow(s) 写入:
import csv headers = [\'name\',\'age\',\'height\'] value = [ {\'name\':\'张三\',\'age\':18,\'height\':180}, {\'name\':\'李四\',\'age\':19,\'height\':175}, {\'name\':\'王五\',\'age\':20,\'height\':170} ] with open("classroom1.csv",\'w\',encoding=\'utf-8\',newline=\'\') as fp: #默认newline=\'\n\' writer = csv.DictWriter(fp,headers) writer.writeheader() writer.writerows(value)
当数据是存放在字典中可以使用 DictWriter 创建 writer 对象,其中,需要传两个参数,第一个是指针,第二个是表头信息。当使用 DictWriter 创建对象时,写入表头还需要执行 writeheader() 操作。