CSV文件是简化的电子表格,保存为纯文本文件。
CSV文件中的每行代表电子表格中的一行,都好分割了该行中的单元格。
CSV文件是简单的,缺少Excel电子表格的许多功能,但它是表示电子表格数据的直接方式。
CSV格式和它声称的完全一致:它就是一个文本文件,具有逗号分隔的值。
但并非CSV文件中的每个逗号,都表示两个单元格之间的分界。
因为split()方法不能处理CSV文件的转义字符,所以使用CSV模块读写CSV文件。
Reader对象
要用CSV模块从CSV文件中读取数据,需要创建一个Reader对象。
Reader对象迭代遍历CSV文件中的每一行。
CSV模块是python自带的,不需要安装,直接导入可用。
不能将文件名字字符串传递给csv.reader()函数。
样例:
1
2
3
4
5
6
7
8
9
|
>>>
import
csv
>>> file1
=
open
(
'file1.csv'
)
>>> file1Reader
=
csv.reader(file1)
>>> file1Data
=
list
(file1Reader)
>>> file1Data
[[
'1'
,
'张三'
,
'男'
,
'28'
], [
'2'
,
'李四'
,
'男'
,
'19'
], [
'3'
,
'王五'
,
'男'
,
'25'
], [
'4'
,
'赵六'
,
'男'
,
'35'
], [
'5'
,
'田七'
,
'男'
,
'54'
]]
>>> file1Data[
2
][
1
]
'王五'
>>>
|
要取得行号,就使用Reader对象的line_num变量,它包含了当前行的编号。
Reader对象只能循环遍历一次。要再次读取CSV文件,必须调用csv.reader,创建一个对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
>>>
import
csv
>>> file1
=
open
(
'file1.csv'
)
>>> file1Reader
=
csv.reader(file1)
>>>
for
row
in
file1Reader:
...
print
(
'Row #'
+
str
(file1Reader.line_num)
+
' '
+
str
(row))
...
Row
#1 ['1', '张三', '男', '28']
Row
#2 ['2', '李四', '男', '19']
Row
#3 ['3', '王五', '男', '25']
Row
#4 ['4', '赵六', '男', '35']
Row
#5 ['5', '田七', '男', '54']
>>>
for
row
in
file1Reader:
...
print
(
'Row #'
+
str
(file1Reader.line_num)
+
' '
+
str
(row))
...
>>>
|
Writer对象
Writer对象将数据写入CSV文件。要创建一个Writer对象,就使用csv.writer()函数。
在windows上,需要为open()函数的newline关键字参数传入一个空字符串。
如果忘记设置newline关键字参数,CSV文件中的行距将有两倍。
在CSV文件中使用双引号,防止逗号被自动转义。
样例:
1
2
3
4
5
6
7
8
9
10
|
>>>
import
csv
>>> file1
=
open
(
'file1.csv'
,
'w'
,newline
=
'')
>>> file1Writer
=
csv.writer(file1)
>>> file1Writer.writerow([
'1'
,
'Tom'
,
'male'
,
'22'
])
15
>>> file1Writer.writerow([
'2'
,
'Jack'
,
'male'
,
'29'
])
16
>>> file1Writer.writerow([
'3'
,
'Linda'
,
'female'
,
'37'
])
19
>>> file1.close()
|
本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/2071228,如需转载请自行联系原作者