每一次碰到 CSV 都需要单独搜一次做法,还经常出一些小 bug。这里对最简单的 CSV 读写做一个整理。
csv 存储的内容如:1 2 3 4 5 6 [ { 'data' : 2 , 'index' : 0 }, ... ]
读CSV 1 2 3 4 5 6 import csvwith open('example.csv' , 'r' , encoding='unicode_escape' ) as csvfile: reader = csv.DictReader(csvfile) for row in reader: print(row['data' ], row['index' ])
注意 unicode_esxape 是对文件中出现了奇怪字符使用的。如果使用 utf-8 仍不能正常解码的时候可以使用。
写CSV 1 2 3 4 5 6 7 8 9 10 11 12 import csvfieldnames = ['data' , 'index' ] with open('example.csv' , 'w' , encoding = 'utf-8' , newline = '' ) as csvfile: writer = csv.writer(csvfile) writer.writerow(fieldnames) writer.writerow([2 , 0 ]) with open('example.csv' , 'w' , newline='' ) as csvfile: writer = csv.DictWriter(csvfile, fieldnames) writer.writeheader() writer.writerow({'data' : 2 , 'index' : 0 })
即第一次使用writerow时,需要先写入第一排域名,然后后面每一排则是根据域名排序的 list。
使用字典和 list 是等价的,哪个方便用哪个。
写入的时候一定不能标记为unicode_escape,否则会乱码。使用utf-8就 ok。
需要加上newline = '',否则每一行后面会接一行空行。