csv.reader(f [, dialect='excel'][optional kwargs]) #返回csv阅读器(本质是一个迭代器,具有__next__()、__iter__()方法),可通过迭代读取csv文件内容。f为打开csv文件的文件对象,注意,实测文件应该用text模式(r或rt)打开,而不是官方文档的binary模式打开(会报_csv.Error: iterator should return strings, not bytes (did you open
the file in text mode?))。dialect规定csv文件解析所采用的属性集,也可通过关键字参数修改指定属性,下文由详细介绍和实例。
l = []
with open('test1.csv','rt') as f:
cr = csv.reader(f)
for row in cr:
print(row)
l.append(row) #将test.csv内容读入列表l,每行为其一个元素,元素也为list
with open('1.csv','wt') as f2:
cw = csv.writer(f2)
#采用writerow()方法
for item in l:
cw.writerow(item) #将列表的每个元素写到csv文件的一行
#或采用writerows()方法
#cw.writerows(l) #将嵌套列表内容写入csv文件,每个外层元素为一行,每个内层元素为一个数据
l = []
with open('test2.csv','rt') as f:
cr = csv.DictReader(f)
for row in cr:
print(row)
l.append(row) #将test2.csv内容读入列表l,每行为其一个元素,元素为dict
#key为标题(未指定时为读取的第一行),value为对应列的数据
with open('2.csv','wt') as f2:
cw = csv.DictWriter(f2,fieldnames=['标题%d' % i for i in range(1,7)])
cw.writeheader() #将fieldnames写入标题行
#采用writerow()方法
for rowdict in l:
cw.writerow(rowdict) #将列表的每个元素(dict)按照对应的键值对写到csv文件的一行
#或采用writerows()方法
#cw.writerows(l) #将dict组成的list整体写入csv文件,每个dict为一行,每个value为一个数据
l = []
with open('test1.csv','rt') as f:
cr = csv.reader(f)
for row in cr:
print(row)
l.append(row) #将test.csv内容读入列表l,每行为其一个元素,元素也为list
with open('1a.csv','wt') as f2:
cw = csv.writer(f2, lineterminator = '\n')
#采用writerow()方法
for item in l:
cw.writerow(item) #将列表的每个元素写到csv文件的一行
#或采用writerows()方法
#cw.writerows(l) #将嵌套列表内容写入csv文件,每个外层元素为一行,每个内层元素为一个数据
五、转义符实例
第三节介绍了转义符的功能,下面用实例示范一下。
l = []
with open('test1.csv','rt') as f:
cr = csv.reader(f)
print(cr.__next__())
以上程序中,无转义符,将输出:['1', '2', '3', '4', '5', '6']。
l = []
with open('test1.csv','rt') as f:
cr = csv.reader(f, escapechar = '3')
print(cr.__next__())