csv.reader(file, delimiter='\t')
,其中 delimiter 代表分隔符,通常根据数据集中相邻元素之间的分隔方式来设定,函数默认每行数据的元素间是以逗号分隔(也可以设置为'\t')。
csv.reader()返回一个reader对象,利用该对象可以遍历csv文件中的行,从csv文件中读取的每一行都以字符串列表的形式返回。
'''
test.csv, 数据以'\t'分割:
name score
Mike 61
hero 89
trump 90
'''
with open('..\\data\\test.csv') as file:
csv_reader = csv.reader(file, delimiter='\t')
for row in csv_reader:
# 第一行为标题头
print(row) # List类型
print(row[0], row[1]) # 列表中的元素
# 输出
['name', 'score']
name score
['Mike', '61']
Mike 61
['hero', '89']
hero 89
['trump', '90']
trump 90
3.1 csv.DictReader
csv.DictReader(file, delimiter=',')
,csv文件的标题头会被识别为键,非第一行会被识别为值,以有序字典OrderedDict的形式返回。
OrderedDict是一种长相类似于列表的数据类型,该列表中嵌套着元组例:line = OrderedDict([('id', '1'), ('name', 'jason'), ('age', '18')])
,每个元组中的第一个元素为键,第二个元素为值(类似于字典)。
'''
test.csv, 数据以'\t'分割
name score
Mike 61
hero 89
trump 90
'''
import csv
with open('..\\data\\test.csv') as file:
csv_reader = csv.DictReader(file, delimiter='\t')
for row in csv_reader:
# 以首次输出进行说明
print(row) # {'name': 'Mike', 'score': '61'},这里自动输出为字典
print(row['name'], row['score']) # 返回:Mike 61
# 输出
{'name': 'Mike', 'score': '61'}
Mike 61
{'name': 'hero', 'score': '89'}
hero 89
{'name': 'trump', 'score': '90'}
trump 90
3.2 csv.writer
csv.writer(file, delimiter='\t') 创建一个常规Writer的对象,传入的是列表类型的数据。
'''
test.csv, 数据以'\t'分割:
name score
Mike 61
hero 89
trump 90
'''
import csv
# a 即以代表 append 方式写入csv文件
with open('..\\data\\test.csv', 'a') as file:
csv_writer = csv.writer(file, delimiter='\t')
# 将列表中的元素依次附加在 csv 文件的下一行
csv_writer.writerow(["Alice", "70"])
'''
新test.csv:
name score
Mike 61
hero 89
trump 90
Alice 70
'''
3.3 csv.DictWriter
csv.DictWriter(file, fieldnames, delimiter='\t') 创建一个常规Writer的对象,传入的是字典类型的数据。
'''
test.csv, 数据以'\t'分割:
name score
Mike 61
hero 89
trump 90
Alice 70
'''
import csv
# newline=‘’参数可以使每次写入数据不会产生空行
with open('..\\data\\test.csv', 'a', newline= '') as file:
# 以字典方式写入
csv_writer = csv.DictWriter(file, fieldnames=['name', 'score'], delimiter='\t')
# 将字典中的元素依次附加在 csv 文件的下一行
csv_writer.writerow({"name": "Johnson", "score": "50"})
'''
新test.csv:
name score
Mike 61
hero 89
trump 90
Alice 70
Johnson 50
'''