CSV,英文全称为Comma Sepatated Values,是以纯文本形式储存表格数据,中文可以叫做逗号分隔值。相比xlsx,文本储存的结构更加清晰。
CSV的写入
采用writerow(),写入每一列,我们可以使用下面的代码生成一个CSV文件。
import csv
with open('examble.csv', 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['name', 'zone', 'score'])
writer.writerow(['John', 'Beijing', '23'])
writer.writerow(['BOb', 'Chengdu', '18'])
writer.writerow(['Wu', 'Shanghai', '23'])
生成的文件通过文本编辑器打开,则是文本类型的,用逗号进行分隔。
name,zone,score
John,Beijing,23
BOb,Chengdu,18
Wu,Shanghai,23
如果通过excel打开效果如下,我们可以增加更多列。
如果我们不想要逗号分隔符,或者使用其他分隔符,可以使用delimiter传递参数。
writer = csv.writer(csvfile, delimiter=' ')
上面的列子,一行行的写入比较麻烦,我们可以通过列表方式解决,同时写入多行:
writer.writerow([['name', 'zone', 'score'], ['John', 'Beijing', '23'], ['BOb', 'Chengdu', '18'], ['Wu', 'Shanghai', '23']])
当然也可以使用字典写入。在使用字典写入时,需要使用Dicwriter,下面是一个例子:
import csv
with open('examble.csv', 'w') as csvfile:
filenames = ['name', 'zone', 'score'] # 定义字段
writer = csv.DictWriter(csvfile, fieldnames=filenames)
writer.writeheader()
writer.writerow({'name':'John', 'zone': 'Beijing', 'score': '18'})
CSV文件的读取
使用Reader 即可将文件读取出来。
import csv
with open('data.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
print(row)
实际上,使用pandas更方便:
import pandas as pd
r = pd.read_csv('data.csv', encoding='ISO-8859-1') # encoding='ISO-8859-1'用于解码
print(r)
参考资料
《python3 网络爬虫开发实践》崔庆才
2020年12月2日