用Python编写 CSV 文件
CSV(逗号分隔值)是一种简单的文件格式,用于存储表格数据,例如电子表格或数据库。 CSV 文件以纯文本形式存储表格数据(数字和文本)。文件的每一行都是一个数据记录。每条记录由一个或多个字段组成,以逗号分隔。使用逗号作为字段分隔符是此文件格式名称的来源。
Python提供了一个名为csv
的内置模块来处理 CSV 文件。该模块提供了各种用于写入 CSV 的类:
- 使用 csv.writer 类
- 使用 csv.DictWriter 类
使用 csv.writer 类
csv.writer
类用于将数据插入 CSV 文件。此类返回一个 writer 对象,该对象负责将用户的数据转换为分隔字符串。应使用newline=''
打开 csvfile 对象,否则引用字段内的字符将无法正确解释。
Syntax: csv.writer(csvfile, dialect=’excel’, **fmtparams)
Parameters:
csvfile: A file object with write() method.
dialect (optional): Name of the dialect to be used.
fmtparams (optional): Formatting parameters that will overwrite those specified in the dialect.
csv.writer
类提供了两种写入 CSV 的方法。它们是writerow()
和writerows()
。
- writerow():此方法一次写入一行。可以使用此方法写入字段行。
句法:
writerow(fields)
- writerows():此方法用于一次写入多行。这可用于编写行列表。
句法:
Writing CSV files in Python writerows(rows)
例子:
# Python program to demonstrate
# writing to CSV
import csv
# field names
fields = ['Name', 'Branch', 'Year', 'CGPA']
# data rows of csv file
rows = [ ['Nikhil', 'COE', '2', '9.0'],
['Sanchit', 'COE', '2', '9.1'],
['Aditya', 'IT', '2', '9.3'],
['Sagar', 'SE', '1', '9.5'],
['Prateek', 'MCE', '3', '7.8'],
['Sahil', 'EP', '2', '9.1']]
# name of csv file
filename = "university_records.csv"
# writing to csv file
with open(filename, 'w') as csvfile:
# creating a csv writer object
csvwriter = csv.writer(csvfile)
# writing the fields
csvwriter.writerow(fields)
# writing the data rows
csvwriter.writerows(rows)
输出:
使用 csv.DictWriter 类
此类返回一个将字典映射到输出行的写入器对象。
Syntax: csv.DictWriter(csvfile, fieldnames, restval=”, extrasaction=’raise’, dialect=’excel’, *args, **kwds)
Parameters:
csvfile: A file object with write() method.
fieldnames: A sequence of keys that identify the order in which values in the dictionary should be passed.
restval (optional): Specifies the value to be written if the dictionary is missing a key in fieldnames.
extrasaction (optional): If a key not found in fieldnames, the optional extrasaction parameter indicates what action to take. If it is set to raise a ValueError will be raised.
dialect (optional): Name of the dialect to be used.
csv.DictWriter 提供了两种写入 CSV 的方法。他们是:
- writeheader():
writeheader()
方法只是使用预先指定的字段名写入 csv 文件的第一行。句法:
writeheader()
-
writerows():
writerows
方法简单地写入所有行,但在每一行中,它只写入值(而不是键)。句法:
writerows(mydict)
例子:
# importing the csv module
import csv
# my data rows as dictionary objects
mydict =[{'branch': 'COE', 'cgpa': '9.0', 'name': 'Nikhil', 'year': '2'},
{'branch': 'COE', 'cgpa': '9.1', 'name': 'Sanchit', 'year': '2'},
{'branch': 'IT', 'cgpa': '9.3', 'name': 'Aditya', 'year': '2'},
{'branch': 'SE', 'cgpa': '9.5', 'name': 'Sagar', 'year': '1'},
{'branch': 'MCE', 'cgpa': '7.8', 'name': 'Prateek', 'year': '3'},
{'branch': 'EP', 'cgpa': '9.1', 'name': 'Sahil', 'year': '2'}]
# field names
fields = ['name', 'branch', 'year', 'cgpa']
# name of csv file
filename = "university_records.csv"
# writing to csv file
with open(filename, 'w') as csvfile:
# creating a csv dict writer object
writer = csv.DictWriter(csvfile, fieldnames = fields)
# writing headers (field names)
writer.writeheader()
# writing data rows
writer.writerows(mydict)
输出: