1、用pandas读写csv文件,参考:https://blog.csdn.net/u011412768/article/details/109522349
2、用Python自带的csv库读写
(1)按行写csv文件
用csv按行写数据时,每一行是按照一个list写入的,所以将每一行的数据做成一个list就可以输出了。 值得注意的是,csv逐行写入数据时,默认的是行之间会空一行,可以通过newline=""来解决这个问题。
import csv
data = [[1, 2, 3],
[4, 5, 6, 7]]
file = "test.csv"
f = open(file, "w", newline="", encoding="utf-8-sig")
csv_writer = csv.writer(f)
for line in data:
csv_writer.writerow(line)
f.close()
最后的文件如下所示:
(2)一次性写入csv文件
用writerrows()这个方法可以一次性写入,不过前提是数据保存为一个list,然后这个list的每个元素也是一个list,对应的是每一行的数据。这里的newline依然需要设置,不然行之间还是会空行。
import csv
data = [[1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10]]
file = "test.csv"
f = open(file, "w", newline="", encoding="utf-8-sig")
csv_writer = csv.writer(f)
csv_writer.writerows(data)
f.close()
(3)按行读csv文件
需要注意的是,csv读进的每一行数据都是list,对应csv文件的每一行数据。这个list的每一个元素对应每一行中的各个值,并且每个值的类型都是string的。如果在存入csv的时候是其他数据类型,通过csv读出来也是字符串,如果想用原来的数据类型,需要自己再进行格式转换一下。
import csv
file = "test.csv"
f = open(file, "r", encoding="utf-8-sig")
csv_reader = csv.reader(f)
for line in csv_reader:
print(line)
f.close()
结果如图所示,上面写入csv的时候,各个基本的元素都是int型的,这里读出来却都是string型的。
至此,所有Python读写csv文件的方法和里面经常会涉及的坑应该都填完了……